Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中,是否可以用更少的代码从值列向数组元素分配键?_Php_Arrays_Multidimensional Array - Fatal编程技术网

在PHP中,是否可以用更少的代码从值列向数组元素分配键?

在PHP中,是否可以用更少的代码从值列向数组元素分配键?,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,假设我有一个元素数组,这些元素本身就是数组,如下所示: $array = [ ['foo' => 'ABC', 'bar' => 'DEF'], ['foo' => 'ABB', 'bar' => 'DDD'], ['foo' => 'BAC', 'bar' => 'EFF'], ]; 要将foo字段的值设置为数组的键,我可以执行以下操作: foreach ($array as $element) { $new_array[$

假设我有一个元素数组,这些元素本身就是数组,如下所示:

$array = [
    ['foo' => 'ABC', 'bar' => 'DEF'],
    ['foo' => 'ABB', 'bar' => 'DDD'],
    ['foo' => 'BAC', 'bar' => 'EFF'],
];
要将
foo
字段的值设置为数组的键,我可以执行以下操作:

foreach ($array as $element) {
    $new_array[$element['foo']] = $element;
}
$array = $new_array;

代码自然是琐碎的,但我一直在想,是否有一个内置的可以为我做同样的事情。

这里有一个例子

$temp = array_combine(array_column($array, 'foo'), $array);
工作

-通过一个数组用于键,另一个数组用于其值来创建数组
-从输入数组中的单个列返回值

注意,也可以获取索引(第三个参数):

混合$index_key=NULL

因此,只需将其用作:

array_column($array, null, 'foo');
你也可以用它


+array\u列($array,null,'foo'),不需要
array\u组合
它构建在
array\u列中
$new_array = array_reduce($array, function($carry, $item) {
    $carry[$item['foo']] = $item;
    return $carry;
}, []);