Array копирует значения в ключи в PHP

У меня есть этот массив:

$a = array('b', 'c', 'd');

Есть ли простой способ преобразования массива в следующий?

$a = array('b' => 'b', 'c' => 'c', 'd' => 'd');

Ответ 1

$final_array = array_combine($a, $a);

http://php.net/array-combine

P.S.
 
* Будьте осторожны с аналогичными значениями. Например:
array('one','two','one') может быть проблематичным, если преобразовать его как дублирующиеся ключи:
array('one'=>..,'two'=>..,'one'=>...)

Ответ 2

Будьте осторожны, решение, предложенное с помощью $a = array_combine($a, $a);, не будет работать для числовых значений.

Я, например, хотел иметь память array(128,256,512,1024,2048,4096,8192,16384) как ключи, так и значения, но в руководстве PHP указано:

Если входные массивы имеют одинаковые строковые ключи, то более позднее значение для этого ключа перезапишет предыдущий. Если, однако, массивы содержат числовые ключи, более позднее значение не будет перезаписывать исходное значение, но будет добавлено.

Итак, я решил это так:

foreach($array as $key => $val) {
    $new_array[$val]=$val;
}