Heim > Backend-Entwicklung > PHP-Tutorial > Unendliche Klassifizierung rekursiver Funktionen

Unendliche Klassifizierung rekursiver Funktionen

WBOY
Freigeben: 2016-08-30 09:36:40
Original
1303 Leute haben es durchsucht

function fun($pid=0,&$brr=array()){//Warum funktioniert das Entfernen von & nicht?

<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>
Nach dem Login kopieren
Nach dem Login kopieren

}
$brr=fun();
echo '

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

//Was bedeutet &$brr=array() & bei der Übergabe von Funktionsparametern? Was macht es?

Antwortinhalt:

function fun($pid=0,&$brr=array()){//Warum funktioniert das Entfernen von & nicht?

<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>
Nach dem Login kopieren
Nach dem Login kopieren

}
$brr=fun();
echo '

';print_r($brr);<br>die();</p>
<p>//Was bedeutet &$brr=array() & bei der Übergabe von Funktionsparametern? Was macht es? </p>

                            
                        
            <p class="answer fmt" data-id="1020000006752366">
                                    </p>
<p>Schauen Sie sich die Beispiele im Handbuch an und Sie werden es verstehen&</p>
                            
            <p class="answer fmt" data-id="1020000006752469">
                                    
</p>
<p>Da & eine Referenz ist, werden bei Verwendung des &-Symbols die Änderungen, die Sie an den Parametern in der Funktion vornehmen, auch außerhalb der Funktion übernommen. Ohne das &-Symbol endet die Änderung der Parameter, mit der Sie in der Funktion konfrontiert werden, mit dem Ende der Funktion. </p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><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>
Nach dem Login kopieren

Genau wie beim obigen Code ist die Ausgabe 10, 20 der Reihe nach. Da a2 das &-Symbol verwendet, wirkt sich die Änderung von $a in a2 auch auf das tatsächlich an a2 übergebene $a aus.

Infinitus-Klassifizierung erfordert ein akkumulierbares Array, ähnlich wie bei static. Wenn das & entfernt wird, wird das $-Array bei jeder Rekursion wieder leer und die Daten werden nicht akkumuliert!

& bedeutet, dass die Adresse übergeben wird, dh jede Operation an der Variablen in der Funktion ändert den Wert der externen Variablen. Andernfalls verschwinden die Änderungen in diesen Variablen, wenn der Funktionsaufruf endet geändert durch Rückkehr von der Funktion

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage