Heim >Backend-Entwicklung >PHP-Tutorial >递归函数里有foreach数组的时候,数组是如何被遍历的?

递归函数里有foreach数组的时候,数组是如何被遍历的?

WBOY
WBOYOriginal
2016-06-13 12:03:431148Durchsuche

递归函数里有foreach数组的时候,数组是怎么被遍历的??
$arr = Array(Array('a1','a2'),Array('b1','b2'),Array('c1','c2'));
function tree($a){
    foreach($a as $row){

    tree($a);
    }
}
tree($a);
这样的代码,在函数体里面tree($a);递归的时候,它是从数组里第一个元素Array('a1','a2')重新开始遍历吗
当第一层的foreach遍历到第二个元素,又一次tree($a);递归的时候,也是从第一个元素Array('a1','a2')重新开始遍历吗??
------解决方案--------------------
你这个递归都死循环了,会溢出的。。。
------解决方案--------------------

$arr = Array(Array('a1','a2'),Array('b1','b2'),Array('c1','c2'));<br />function tree($a){<br />  foreach($a as $row){	<br />    if(is_array($row)) tree($row);<br />    else echo $row . '<br>';<br />  }<br />}<br />tree($arr);<br />
a1
a2
b1
b2
c1
c2

------解决方案--------------------
你的递归没有结束条件,会死循环。
结束条件是,如果元素不是数组则不需要递归了。

<br />$arr = Array(Array('a1','a2'),Array('b1','b2'),Array('c1','c2'));<br />function tree($a){<br />    if(is_array($a)){ // 这里判断是否需要再递归<br />        foreach($a as $row){<br />            tree($row);<br />        }<br />    }else{<br />        echo $a.'<br>';<br />    }<br />}<br />tree($arr);<br />

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn