我有这个数组:
$a = array('b', 'c', 'd');
有没有简单的方法将数组转换成以下格式?
$a = array('b' => 'b', 'c' => 'c', 'd' => 'd');
$final_array = array_combine($a, $a);
参考文献:http://php.net/array-combine
P.S. 当源数组包含如下重复键时,请小心处理:
$a = ['one','two','one'];
请注意重复的one
元素。
注意,使用$a = array_combine($a, $a);
提出的解决方案对于数字值将无效。
例如,我想要一个内存array(128,256,512,1024,2048,4096,8192,16384)
作为键和值,但是PHP手册指出:
如果输入数组具有相同的字符串键,则该键的后续值将覆盖先前的值。但是,如果数组包含数字键,则后续值不会覆盖原始值,而是将被附加。
所以我这样解决:
foreach($array as $key => $val) {
$new_array[$val]=$val;
}
array_merge
的文档,而不是 array_combine
;我甚至使用 array_combine
进行了测试,在数字键数组中,后一个值始终覆盖前一个值。 - Brett