-5

我正在寻找和尝试几天......对不起!我有一个像下面这样的数组。它是订购的,但我可能不知道它有多深。我需要遍历它,每个子节点。我不想使用递归,因为我需要将它集成到另一个代码块中,这对我自己来说会很困难。我正在寻找像foreach这样简单的东西,但这只会给我3个父节点......我需要将每个节点放在一个“块”中,因为我需要像$arr['id_categoria']and$arr['nome_categoria']等那样访问它们

有什么建议吗?多谢!

Array
(
    [3] => Array
        (
            [id_categoria] => 3
            [nome_categoria] => Bebidas
            [id_categoria_pai] => 0
            [submenu] => Array
                (
                    [5] => Array
                        (
                            [id_categoria] => 5
                            [nome_categoria] => Alcoolicas
                            [id_categoria_pai] => 3
                            [submenu] => Array
                                (
                                    [10] => Array
                                        (
                                            [id_categoria] => 10
                                            [nome_categoria] => Espirituosas
                                            [id_categoria_pai] => 5
                                            [submenu] => Array
                                                (
                                                )

                                        )

                                )

                        )

                    [11] => Array
                        (
                            [id_categoria] => 11
                            [nome_categoria] => sem alcool
                            [id_categoria_pai] => 3
                            [submenu] => Array
                                (
                                )

                        )

                )

        )

    [4] => Array
        (
            [id_categoria] => 4
            [nome_categoria] => Sandes
            [id_categoria_pai] => 0
            [submenu] => Array
                (
                )

        )

    [7] => Array
        (
            [id_categoria] => 7
            [nome_categoria] => Outros pedidos
            [id_categoria_pai] => 0
            [submenu] => Array
                (
                )

        )

)
4

2 回答 2

1

为此,您必须使用递归,因为您不知道它有多深。

但是,您可以创建一个递归函数来提取数组中的所有单个值。

于 2013-02-08T16:20:18.403 回答
1

递归?您不需要(显式)递归!只需使用 a RecursiveArrayIterator,将其包装在 aRecursiveIteratorIterator中并进行迭代,如下所示:

$array = array(); // From the OP

$iter = new RecursiveIteratorIterator( new RecursiveArrayIterator( $array), RecursiveIteratorIterator::SELF_FIRST); 

foreach( $iter as $el) {
    echo $el['id_categoria'];
}

对于您的数组,这将打印:

3 
5
10 
11 
etc.

完毕!

于 2013-02-08T16:29:37.050 回答