Heim  >  Artikel  >  Backend-Entwicklung  >  递归函数的无限极分类

递归函数的无限极分类

WBOY
WBOYOriginal
2016-08-30 09:36:401227Durchsuche

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会重新变为空,数据不会累加!

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

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