Fragen zu PHP-Referenzen

WBOY
Freigeben: 2016-08-31 08:54:51
Original
1091 Leute haben es durchsucht

//Rückgabe per Referenz

<code>function &testReturn(){  
    static $b = 1;  
    $b += 2;  
    return $b;  
}  
$a = &testReturn();  
$a = 8;  
$c = &testReturn();
$c = 12;
$d = testReturn();  
//echo $d;  

function &cuitReturn(){
    $a = 2;
    return $a;
}
$cr = &cuitReturn();
//echo $cr;
$cr = 4;
$cr1 = cuitReturn();
echo $cr1;
</code>
Nach dem Login kopieren
Nach dem Login kopieren

Die zweite Funktion ändert den Wert der zugewiesenen Variablen, $cr = 4; warum ändert sich der Rückgabewert der Funktion nicht?

Antwortinhalt:

//Rückgabe per Referenz

<code>function &testReturn(){  
    static $b = 1;  
    $b += 2;  
    return $b;  
}  
$a = &testReturn();  
$a = 8;  
$c = &testReturn();
$c = 12;
$d = testReturn();  
//echo $d;  

function &cuitReturn(){
    $a = 2;
    return $a;
}
$cr = &cuitReturn();
//echo $cr;
$cr = 4;
$cr1 = cuitReturn();
echo $cr1;
</code>
Nach dem Login kopieren
Nach dem Login kopieren

Die zweite Funktion ändert den Wert der zugewiesenen Variablen, $cr = 4; warum ändert sich der Rückgabewert der Funktion nicht?

Der Code Ihrer ersten Funktion sieht tatsächlich so aus, da $b eine statische Variable ist und daher nach Ausführung der Funktion nicht freigegeben wird.

<code class="php">...    //省略代码
$c = &$b;
$c = 12;    //此处$b为12
$d = testReturn();    //$b+2
echo $d; //当然是14而不是7</code>
Nach dem Login kopieren

Aber in der zweiten Funktion ist $a eine lokale Variable. Nachdem die Funktion ausgeführt wurde, wird der Speicher dieser Variablen freigegeben.

Zuerst müssen wir klarstellen, ob die aufrufende Funktion eine Referenz zurückgibt Dem Funktionsnamen muss ein & vorangestellt werden, und der Zuweisungsanweisung muss ein & vorangestellt werden 🎜> im Titel der Frage ist eigentlich kein Hinweis $cr1 = cuitReturn();Zurück zu dem, was der Fragesteller gesagt hat: Warum hat sich der Rückgabewert nicht geändert? Das liegt daran, dass

in der Funktion

eine lokale Variable und nicht statisch ist und daher nach der Rückkehr der Funktion Es entspricht dem Verweisen auf eine lokale Variable. cuitReturn Wenn diese in C platziert wird, treten große Probleme auf ... Das bedeutet, dass der Zeiger auf unbekannten Speicher zeigt, $a aber die PHP-Engine sollte damit umgehen, also $cr = &cuitReturn(); für Der Verweis auf ist ungültig

Verwandte Etiketten:
php
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 Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage