Php 递归循环和嵌套多维数组的问题

Php 递归循环和嵌套多维数组的问题,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我这里有一个嵌套的多维数组: Array ( [merchant] => Array ( [XML_Serializer_Tag] => Array ( [id] => 736 [name] => Cadbury Gifts Direct ) [prod] => Array (

我这里有一个嵌套的多维数组:

Array
(
[merchant] => Array
    (
        [XML_Serializer_Tag] => Array
            (
                [id] => 736
                [name] => Cadbury Gifts Direct
            )

        [prod] => Array
            (
                [XML_Serializer_Tag] => Array
                    (
                        [0] => Array
                            (
                                [XML_Serializer_Tag] => Array
                                    (
                                        [id] => 88966064
                                        [pre_order] => no
                                        [web_offer] => no
                                        [in_stock] => no
                                        [stock_quantity] => 0
                                    )

                                [pId] => 608
                                [isbn] => 0000000000000
                                [text] => Array
                                    (
                                        [name] => 50% OFF 56g Creme Egg Minis
                                        [desc] => 50% OFF Creme Egg Minis in a 56g bag.
                                    )

                                [uri] => Array
                                    (
                                        [awTrack] => http://www.awin1.com/pclick.php?p=88966064&a=67702&m=736
                                        [awThumb] => http://images.productserve.com/thumb/736/88966064.jpg
                                        [awImage] => http://images.productserve.com/preview/736/88966064.jpg
                                        [mLink] => http://www.cadburygiftsdirect.co.uk/products/608-50-off-56g-creme-egg-minis.aspx
                                        [mImage] => http://www.cadburygiftsdirect.co.uk/images/thumbs/0001084.png
                                    )

                                [price] => Array
                                    (
                                        [XML_Serializer_Tag] => Array
                                            (
                                                [curr] => GBP
                                            )

                                        [buynow] => 0.31
                                        [store] => 0.00
                                        [rrp] => 0.00
                                        [delivery] => 0.00
                                    )

                                [cat] => Array
                                    (
                                        [awCatId] => 437
                                        [awCat] => Chocolate
                                        [mCat] => Full Range
                                    )

                                [brand] => 
                                [valFrom] => 0000-00-00
                                [valTo] => 0000-00-00
                                [comAmount] => 0.00
                            )
随后,分段循环

所以

等等

我需要找到每个数组段的属性名称

所以我使用了这个递归循环:

private function recursive_array($old_array, $new_array = array()) {

    foreach ($old_array as $key => $value) {

        if (is_array($value) && $key < 1) {
            $new_array = $this->recursive_array($value, $new_array);

        } else {
            if ($key < 1) {
                $new_array[] = $key;

            }
        }
    }
    return $new_array;
}
它还收集了顶部嵌套数组:

[XML_Serializer_Tag] => Array
            (
                [id] => 736
                [name] => Cadbury Gifts Direct
            )
这只是整个提要的细节,而不是单个片段

我需要一种过滤掉顶部嵌套数组的方法,但请记住,细节是动态的,因此键的名称可以从一个提要更改为下一个提要,可能是这样

$riter = new RecursiveIteratorIterator(New RecursiveArrayIterator($array));
foreach ($riter as $key => $val) {
    if ($riter->getDepth() > 1) {
        echo "$key => $val\n";
    }
}

默认情况下,递归迭代器只访问叶节点(每个路径下最深的级别)。getDepth()可用于确保为最小深度。我不确定1是否是正确的数字,但无论如何…

使用
array\u shift
弹出数组的第一个元素

是的,如果我将其设置为第二级,它对所有不同类型的数组都有效。我现在需要重新编写上面的函数,因为通过使用此方法,它将删除我用来计数的键(这将输出一长串字符串)
[XML_Serializer_Tag] => Array
            (
                [id] => 736
                [name] => Cadbury Gifts Direct
            )
$riter = new RecursiveIteratorIterator(New RecursiveArrayIterator($array));
foreach ($riter as $key => $val) {
    if ($riter->getDepth() > 1) {
        echo "$key => $val\n";
    }
}