在PHP中将数组值复制到键中

193

我有这个数组:

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

有没有简单的方法将数组转换成以下格式?

$a = array('b' => 'b', 'c' => 'c', 'd' => 'd');
2个回答

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

参考文献:http://php.net/array-combine

P.S. 当源数组包含如下重复键时,请小心处理:

$a = ['one','two','one'];

请注意重复的one元素。


array_combine相对于in_array来说有点慢。array_combine vs in_array vs isset性能测试:https://onlinephp.io/c/12411 - csandreas1

-10

注意,使用$a = array_combine($a, $a);提出的解决方案对于数字值将无效。

例如,我想要一个内存array(128,256,512,1024,2048,4096,8192,16384)作为键和值,但是PHP手册指出:

如果输入数组具有相同的字符串键,则该键的后续值将覆盖先前的值。但是,如果数组包含数字键,则后续值不会覆盖原始值,而是将被附加。

所以我这样解决:

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

10
以上是不正确的 - 您的引用来自于 array_merge 的文档,而不是 array_combine;我甚至使用 array_combine 进行了测试,在数字键数组中,后一个值始终覆盖前一个值。 - Brett

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接