Php 将多维数组缩减为一个数组

Php 将多维数组缩减为一个数组,php,multidimensional-array,Php,Multidimensional Array,简单地说,我需要帮助,如何使多维数组成为一个数组,而不改变关键数组 其中: Array ( [0] => Array ( [554] => a ) [1] => Array ( [561] => b ) [2] => Array

简单地说,我需要帮助,如何使多维数组成为一个数组,而不改变关键数组

其中:

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

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

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

    )
其中:

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

这应该适合您:

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

我喜欢使用
array\u walk\u 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
)

我将不得不发布这篇文章,因为当前所有其他答案都过于复杂:

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

这就是所需的一切。

我希望我能帮助您,首先不要误解,您必须进一步调查,在寻求解决方案之前,我强烈建议您访问www.php.net,搜索数组文档,足够多的人说您正在寻找遍历数组的方法,实际上,您正在寻找“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>';

?> 


欢迎来到SO。你能描述一下你的挑战是什么吗?现在,你的问题还不是很好。如果你想得到一些帮助,有一个好的格式是很重要的。如有必要,搜索一些有很多投票的问题。你可以学习如何写更好的问题。:)O对不起,我想我问得对,如果这个问题没有用,那么我如何删除它?它是有效的,我想我必须使用array\u reduce,谢谢。也许你先读了这个问题:在你的答案中,D键丢失了!好吧,那么,给你一个更好的解决方案。您只需在数组上迭代
+
操作符。