在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;
}, []);