Я видел много сообщений, отвечающих на этот вопрос в различных формах, но почему-то никто, кажется, не решает мою проблему.Как изменить имя ключа в массиве?
PHP 5.5.8 + CodeIgniter
Полная картина:
SQL-запрос выдает массив имен отделов.
$strSQL = "SELECT DISTINCT DepartmentName FROM ...
$query=$this->db->query($strSQL);
$data=$query->result_array();
Я сплющил массив, чтобы сделать его очень простым.
$flatArray = array_column($data, 'DepartmentName');
array_unshift($flatArray, "");
return $flatArray;
А затем вернитесь к моему контроллеру, чтобы создать раскрывающийся список на форме.
Массив однако имеет вид:
[PGroups] => Array
(
[0] => Dept 1
[1] => Dept 2
[2] => Dept 3
.....
И в моем (на основе CodeIgniter) зрения, у меня есть это:
`echo "<td>" . form_dropdown('PurchasingGroup', $PGroups). "</td>";`
, который создает список HTML раскрывающийся с численными значениями, что варианты, а не фактические слова названий отдела.
Я пытаюсь получить этот результат:
["Dept 1"] => Dept 1
["Dept 2"] => Dept 2
["Dept 3"] => Dept 3
.....
..because тогда, когда я buyild мой взгляд, варианты значений будут точный текст поместить в мой поиск SQL, чтобы получить дополнительную информацию.
Чтобы решить эту проблему, я попытался
- делать что-то в операторе SQL, но это не может повлиять на ключевые имена - тупиком
тогда один пост сказал, чтобы попробовать это, но я не понимаю, как это изменит имя ,, похоже, просто изменит значение элемента.
$ arr [$ newkey] = $ arr [$ oldkey]; unset ($ arr [$ oldkey]);
Это смотрит мне в лицо, но я собираюсь кругами. Помогите?
'$ arr [$ newkey] = $ arr [$ oldkey];' копирует содержимое '$ arr [$ oldkey]' другому элементу массива с ключом '$ newkey'. В вашем случае это должно быть '$ arr [$ arr [$ oldkey]] = $ arr [$ oldkey]', потому что вы хотите, чтобы ключ и значение были одинаковыми. – Revenant
Ответ сам по себе прост: '$ arr = array_combine ($ arr, $ arr);' Но я не понимаю, хотите ли вы изменить только '$ flatArray' или даже исходные' $ data' – fusion3k
. Мой желаемый конечный результат - это плоский массив, где имена клавиш и значения ключа точно совпадают. Какими бы то ни было способами. – Maxcot