如何通过交换键使数组的数组变成简单的关联数组?

时间:2019-02-25 09:31:49

标签: php arrays

如何使多维数组像第一个键成为根键,第二个键成为值?

有没有内置函数,如果是,那么哪个?

我的输入数组是:

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循环来做到这一点,但是只需查找任何现有函数!

3 个答案:

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