Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 无递归迭代数组_Php_Arrays_Multidimensional Array - Fatal编程技术网

Php 无递归迭代数组

Php 无递归迭代数组,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我搜索和尝试了好几天。。。很抱歉 我有一个类似下面的数组。这是命令,但我可能不知道有多深。我需要遍历它,每个子节点。我不想使用递归,因为我需要将它集成到另一个代码块中,这对我自己来说很困难。我正在寻找一些简单的东西,比如foreach,但这只会给我3个父节点。。。我需要将每个节点放在一个块中,因为我需要访问它们,比如$arr['id_categoria']和$arr['nome_categoria'],等等 有什么建议吗? 非常感谢 Array ( [3] => Array

我搜索和尝试了好几天。。。很抱歉 我有一个类似下面的数组。这是命令,但我可能不知道有多深。我需要遍历它,每个子节点。我不想使用递归,因为我需要将它集成到另一个代码块中,这对我自己来说很困难。我正在寻找一些简单的东西,比如foreach,但这只会给我3个父节点。。。我需要将每个节点放在一个块中,因为我需要访问它们,比如$arr['id_categoria']和$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
                (
                )

        )

)

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


但是,可以使用递归函数提取数组中的所有单个值。

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

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

完成了

如果你不知道深度,你需要递归@杰克曼尼:在没有递归的情况下,如何确定最大深度?首先:这当然应该通过递归来完成。第二:array\u walk\u recursive可能可以为您完成大部分工作。最后:StackOverlow是一个提问和学习的地方——不是说你想要什么样的牛排,然后等待其他人来烹调。@leftclickben——我没有充分向下滚动OP的var_dump输出,以了解数组有一个实际的分支树结构。如果不是针对分支,那么您可以通过while循环,如果给定的值没有整数键,则中断。但是是的…对于上面的数组,OP需要递归。谢谢大家的建议@乔恩:我没有要牛排,我说了我需要什么,然后我问了如何去那里的建议。不一样!事实上,不需要递归就可以实现,其他一切都是如此。您只需使用递归算法并将其转换为迭代版本。但这有点不自然。