再帰関数に foreach 配列がある場合、その配列はどのように走査されるのでしょうか? ?
$arr = Array(Array('a1','a2'),Array('b1','b2'),Array('c1','c2'));
関数ツリー($a) ){
foreach($a as $row){
tree($a);
}
}
tree($a);
コードは次のようになります。 Tree($a); が関数本体で再帰的である場合、最初のレベルの foreach が配列の最初の要素 Array('a1', 'a2') から走査を再開しますか? 2 番目の要素、そして Tree($a); が再び再帰的になると、最初の要素 Array('a1', 'a2') から再び走査が開始されますか? ?
------解決策----------------------再帰が無限ループに陥っており、オーバーフローします。の。 。 。
------解決策---------
a1
$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 />
<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 />