如何使多维数组像第一个键成为根键,第二个键成为值?
有没有内置函数,如果是,那么哪个?
我的输入数组是:
Array
(
[key1] => Array
(
[key] => key1
[label] => value1
)
[key2] => Array
(
[key] => key2
[label] => value2
)
[key3] => Array
(
[key] => key3
[label] => value3
)
[key4] => Array
(
[key] => key4
[label] => value4
)
)
预期输出:
Array (
[key1] => value1
[key2] => value2
[key3] => value3
[key4] => value4
)
我可以通过迭代数组上的for循环来做到这一点,但是只需查找任何现有函数!
答案 0 :(得分:2)
实际上,您可以在不使用某些本机函数的情况下进行循环操作。
在我的头顶上:
$combined = array_combine( array_keys( $input ), array_column( $input, 'label' ) );
或者如果您想从物品中拿钥匙:
$combined = array_column( $input, 'label', 'key' );
答案 1 :(得分:1)
您可以尝试这种核心阵列功能的组合,
$input = array_combine(array_keys($input), array_column($input, 'label'));
array_combine —通过使用一个数组作为键并使用另一个数组作为其值来创建数组
array_keys —返回数组的所有键或键的子集
array_column —从输入数组的单个列中返回值
答案 2 :(得分:1)
您可以尝试array_reduce:
$array = // .. your array
$result = array_reduce($array, function($carry, $item){
$carry[$item->key] = $item->value;
return $carry;
},[]);