将多维数组减少为一个数组

时间:2014-12-07 10:19:05

标签: php multidimensional-array

简单地说我需要帮助,如何在不更改密钥数组的情况下将多维数组放入一个数组中?

从这些:

Array
    (
        [0] => Array
            (
                [554] => a
            )

        [1] => Array
            (
                [561] => b
            )

        [2] => Array
            (
                [574] => c
            )

    )

进入这些:

Array
(
    [554] => a
    [561] => b
    [574] => c
)

4 个答案:

答案 0 :(得分:0)

我喜欢使用array_walk_recursive来解决这个问题:

function flatten($array)
{
    $temp=array();
    array_walk_recursive($array, function($item, $key) use (&$temp) {
        $temp[$key]=$item;
    });

    return $temp;
}

$a = array(
    array(
        564=>'a',
    ),
    array(
        561=>'b',
        array(
            562=>'d',
            array(
                563=>'e',
            ),
        ),
    ),
    array(
        574=>'c',
    ),
);

$b = flatten($a);
print_r($b);

这是我的输出:

Array
(
    [564] => a
    [561] => b
    [562] => d
    [563] => e
    [574] => c
)

答案 1 :(得分:0)

我只需要发布这个,因为所有其他当前的答案都非常复杂:

$result = array_reduce($array, function ($result, $array) { return $result + $array; }, array());

这就是所需要的一切。

答案 2 :(得分:0)

我希望我可以帮助你,首先并且不要误解,你需要进一步调查,在寻求解决方案之前,我强烈建议你去www.php.net,{{3并且搜索数组文档,足够说你正在寻找循环数组的方法,实际上你正在寻找" foreach"声明,在这里我做了一个简单的解决方案,你可以在以后转换成函数:

<?php

$original = array
    (
        0 => array(554 => 'a'),
        1 => array(561 => 'b'),
        2 => array(574 => 'c'),
        );


/*$result = Array
(
    [554] => a
    [561] => b
    [574] => c
);*/

$result = array();


foreach ($original as $sub_array) {

    //this help us read first level array
    foreach ($sub_array as $subArrayKey=>$subArray) {
        // this help us read second level  array
        $result[$subArrayKey] = $subArray;

    }
}

echo '<pre>';
print_r($result);
echo '</pre>';

?> 

答案 3 :(得分:-1)

这应该适合你:

$array = array(
            array(554 => "a"),
            array(561 => "b"),
            array(574 => "c")
        );


function getL2Keys($array) {
    foreach($array as $sub)
        $result[] = array_keys($sub);

    return call_user_func_array('array_merge', array_values($result));
}

$array = array_combine(getL2Keys($array), call_user_func_array('array_merge', array_values($array)));
print_r($array);

输出:

Array
(
    [554] => a
    [561] => b
    [574] => c
)