是否可以使用更少的代码从值列将键分配给 PHP 中的数组元素? [重复]

问题描述 投票:0回答:3

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

$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;

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

php arrays multidimensional-array
3个回答
8
投票

注意

array_column
也可以获取索引(第三个参数):

混合 $index_key = NULL

所以只需用作:

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

3
投票

这是适合您箱子的内衬,

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

工作演示

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


0
投票

您也可以使用 array_reduce

来完成
$new_array = array_reduce($array, function($carry, $item) {
    $carry[$item['foo']] = $item;
    return $carry;
}, []);
© www.soinside.com 2019 - 2024. All rights reserved.