首页  >  文章  >  后端开发  >  递归函数的无限极分类

递归函数的无限极分类

WBOY
WBOY原创
2016-08-30 09:36:401272浏览

function fun($pid=0,&$brr=array()){//为什么去掉&就不行了?

<code>$sql="select * from wuxianji where pid=$pid";
$rs=mysql_query($sql);

while($arr=mysql_fetch_assoc($rs)){
    $brr[]=$arr;
    fun($pid=$arr['id'],$brr);
}
return $brr;</code>

}
$brr=fun();
echo '

';print_r($brr);
die();

//函数传参中的&$brr=array() &是什么意思?有什么作用?

回复内容:

function fun($pid=0,&$brr=array()){//为什么去掉&就不行了?

<code>$sql="select * from wuxianji where pid=$pid";
$rs=mysql_query($sql);

while($arr=mysql_fetch_assoc($rs)){
    $brr[]=$arr;
    fun($pid=$arr['id'],$brr);
}
return $brr;</code>

}
$brr=fun();
echo '

';print_r($brr);<br>die();
<p>//函数传参中的&$brr=array()   &是什么意思?有什么作用?</p>

                            
                        
            <p class="answer fmt" data-id="1020000006752366">
                                    </p><p>看看手册的例子你就明白啦&</p>
                            
            <p class="answer fmt" data-id="1020000006752469">
                                    
</p><p>因为&是取引用,当使用了&符号之后,你在函数里面对参数的修改也会带到函数外面。而没有&符号,你在函数里面对参数的修改,随着函数结束就结束了。</p>
<pre class="brush:php;toolbar:false"><code>function a1($a) {
    $a = 20;
}
function a2(&$a) {
    $a = 20;
}
$a = 10;
a1($a);
var_dump($a);
a2($a);
var_dump($a);</code>

就像上面的代码一样,输出依次是10, 20。因为a2使用了&符号,所以在a2里面对$a的修改也影响到了实际传给a2的$a。

无限极分类需要有一个可以累加的数组,类似于static,如果去掉&,每次递归的$array会重新变为空,数据不会累加!

&就是传的是地址,就是在函数中对该变量的操作都会改变外面的变量值,不然,在函数调用结束的时候,这些变量的改变就会消失,只有通过函数返回才能改变

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn