是否可以用较少的代码从值列中为PHP中的数组元素分配键?

时间:2019-05-13 08:02:53

标签: php arrays multidimensional-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;

代码自然是微不足道的,但是我一直想知道是否有内置的代码可以为我做同样的事情。

3 个答案:

答案 0 :(得分:5)

通知array-column也可以获取索引(第三个参数):

  

混合$ index_key = NULL

因此只需用作:

array_column($array, null, 'foo');

答案 1 :(得分:3)

这里是您的案件的衬里,

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

工作demo

array_combine —通过使用一个数组作为键并使用另一个数组作为其值来创建数组
array_column —从输入数组的单个列中返回值

答案 2 :(得分:0)

您也可以使用array_reduce

$new_array = array_reduce($array, function($carry, $item) {
    $carry[$item['foo']] = $item;
    return $carry;
}, []);