Php 无递归迭代数组
我搜索和尝试了好几天。。。很抱歉 我有一个类似下面的数组。这是命令,但我可能不知道有多深。我需要遍历它,每个子节点。我不想使用递归,因为我需要将它集成到另一个代码块中,这对我自己来说很困难。我正在寻找一些简单的东西,比如foreach,但这只会给我3个父节点。。。我需要将每个节点放在一个块中,因为我需要访问它们,比如$arr['id_categoria']和$arr['nome_categoria'],等等 有什么建议吗? 非常感谢Php 无递归迭代数组,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我搜索和尝试了好几天。。。很抱歉 我有一个类似下面的数组。这是命令,但我可能不知道有多深。我需要遍历它,每个子节点。我不想使用递归,因为我需要将它集成到另一个代码块中,这对我自己来说很困难。我正在寻找一些简单的东西,比如foreach,但这只会给我3个父节点。。。我需要将每个节点放在一个块中,因为我需要访问它们,比如$arr['id_categoria']和$arr['nome_categoria'],等等 有什么建议吗? 非常感谢 Array ( [3] => Array
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需要递归。谢谢大家的建议@乔恩:我没有要牛排,我说了我需要什么,然后我问了如何去那里的建议。不一样!事实上,不需要递归就可以实现,其他一切都是如此。您只需使用递归算法并将其转换为迭代版本。但这有点不自然。