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>
}
$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 kopierenNach 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