У меня есть этот массив:
$a = array('b', 'c', 'd');
Есть ли простой способ преобразования массива в следующее?
$a = array('b' => 'b', 'c' => 'c', 'd' => 'd');
$final_array = array_combine($a, $a);
PS
* Будьте осторожны с аналогичными значениями. Например:
array('one','two','one')
может быть проблематичным, если преобразовать, как дубликаты ключей:
array('one'=>..,'two'=>..,'one'=>...)
Будьте осторожны, решение, предложенное с помощью $a = array_combine($a, $a);
не будет работать для числовых значений.
Я, например, хотел иметь array(128,256,512,1024,2048,4096,8192,16384)
памяти array(128,256,512,1024,2048,4096,8192,16384)
как ключи, так и значения, но в руководстве PHP указано:
Если входные массивы имеют одинаковые строковые ключи, то более позднее значение для этого ключа перезапишет предыдущий. Если, однако, массивы содержат числовые клавиши, более поздняя величина не будет перезаписывать исходное значение, но будет добавлена.
Поэтому я решил это так:
foreach($array as $key => $val) { $new_array[$val]=$val; }