php使用键展平多维数组

php使用键展平多维数组,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我有这个数组 $array =array('a', 'b', array(array('c'), 'd'), 'e', array('f'), 'g'); 我想得到这个结果 Array ( [0] => a [1] => b [2] => c [3] => d [4] => e [5] => f [6] => g ) 我正在使用此功能: function flatten ($array) {

我有这个数组

$array =array('a', 'b', array(array('c'), 'd'), 'e', array('f'), 'g');
我想得到这个结果

Array
(
    [0] => a
    [1] => b
    [2] => c
    [3] => d
    [4] => e
    [5] => f
    [6] => g
)
我正在使用此功能:

function flatten ($array) {
    $result = array();
    array_walk_recursive($array, function($v, $k) use (&$result) {
        $result[] = $v;
    });
    return $result;
}
我得到的结果是:

Array
(
    [0] => array('a', 'b', 

    [1] => array(array('c'), 'd'),

    [2] =>  'e', array('f'), 'g')
)
与原始输入数组相同

任何帮助都将不胜感激

function flatten($a) {
    if(!is_array($a))
        return array($a);
    return call_user_func_array(
        'array_merge',
        array_map('flatten', $a)
    );
}


$a = array('a', 'b', array(array('c'), 'd'), 'e', array('f'), 'g');
print_r(flatten($a));
提供所需的输出


或者,您也可以使用SPL,尤其是
递归迭代器
递归数组迭代器
。考虑这个例子:

$array = array('a', 'b', array(array('c'), 'd'), 'e', array('f'), 'g');
$iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($array));
foreach($iterator as $value) {
    $data[] = $value;
}
echo '<pre>';
print_r($data);
echo '</pre>';

你使用什么版本的php?你得到了一个多么疯狂的数组。@user888300:你能用有效的php语法重新发布你的原始数组吗?(无var_转储)。我怀疑它实际上并不是你想象的那样。@user888300:嗯,对我来说很有用。复制粘贴:)@DushyantJoshi真的吗?你可以看看我所有的答案,我总是建议你用这个来压平阵列是的,你是对的。但是你会对这个链接发表评论,而不是一次又一次地发布相同的答案。这里,@Dushyant Joshi:你能链接到这个特定的答案吗?因为我真的没看到。
$array = array('a', 'b', array(array('c'), 'd'), 'e', array('f'), 'g');
$iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($array));
foreach($iterator as $value) {
    $data[] = $value;
}
echo '<pre>';
print_r($data);
echo '</pre>';
Array
(
    [0] => a
    [1] => b
    [2] => c
    [3] => d
    [4] => e
    [5] => f
    [6] => g
)