Heim  >  Artikel  >  Backend-Entwicklung  >  Referenz und Rückgabe von PHP-Funktionen

Referenz und Rückgabe von PHP-Funktionen

蓝冰凌z
蓝冰凌zOriginal
2018-05-04 11:49:452138Durchsuche

Die Referenz der PHP-Funktion ist die gleiche wie die Variablenreferenz in PHP, daher werfen wir heute einen Blick auf einige Beispiele für Funktionsrückgaben. Schauen wir uns diese gemeinsam an.

Schauen Sie sich zuerst den Code an:

<?php
function &test() {
    static $b=0;//申明一个静态变量
    $b=$b+1;
    echo $b;
    return $b;
}
$a=test();//这条语句会输出 $b的值 为1
$a=5;
$a=test();//这条语句会输出 $b的值 为2
$a=&test();//这条语句会输出 $b的值 为3
$a=5;
$a=test();//这条语句会输出 $b的值 为6
?>

Erklären Sie unten:

Auf diese Weise erhält $a=test(); Es handelt sich nicht um eine Referenzrückgabe einer Funktion. Der Grund dafür ist, dass PHP festlegt, dass das, was durch $a=&test(); erhalten wird Was ist eine Referenzrückgabe? (Im PHP-Handbuch heißt es: Referenzrückgabe wird verwendet, wenn Sie eine Funktion verwenden möchten, um herauszufinden, an welche Variable die Referenz gebunden werden soll.) Dieser Unsinn hat es mir unmöglich gemacht, ihn zu verstehen lange.

Um es anhand des obigen Beispiels zu erklären: Der Aufruf einer Funktion in der Methode

$a=test() weist den Wert der Funktion nur $a zu, Änderungen an $a jedoch nicht Es betrifft $b in der Funktion und die Funktion wird über $a=&test() aufgerufen. Ihre Funktion besteht darin, die Speicheradresse der $b-Variablen in $b und die Speicheradresse der $a-Variablen auf dieselbe zu verweisen , was einen Effekt erzeugt, der „$a=&$b;“ entspricht. Das Ändern des Werts von $a ändert also auch den Wert von $b, sodass nach der Ausführung von

$a=&test();
$a=5;

der Wert von $b wurde 5.

Statische Variablen werden hier verwendet, um jedem die Referenzrückgabe der Funktion verständlich zu machen. Tatsächlich wird die Referenzrückgabe der Funktion hauptsächlich in Objekten verwendet

Im Anhang finden Sie ein offizielles PHP-Beispiel:

Durch den Aufruf einer Funktion mit $a=test() wird der Wert der Funktion nur $a zugewiesen. Änderungen an $a haben keinen Einfluss auf $b in der Funktion. Nun, seine Funktion besteht darin, die Speicheradresse der $b-Variablen in return $b und die Speicheradresse der $a-Variablen auf dieselbe Stelle zu verweisen, was einen Effekt erzeugt, der dem von „$a=&$b;“ entspricht Der Wert von $a ändert auch den Wert von $b, sodass nach der Ausführung von

$a=&test();
$a=5;

der Wert von $b 5 wird.

Statische Variablen werden hier verwendet, um jedem die Referenzrückgabe der Funktion verständlich zu machen. Tatsächlich wird die Referenzrückgabe der Funktion hauptsächlich in Objekten verwendet

Im Anhang finden Sie ein offizielles PHP-Beispiel:

//This is the way how we use pointer to access variable inside the class.
<?php
class talker{
    private $data = &#39;Hi&#39;;
    public function & get(){
        return $this->data;
    }
    public function out(){
        echo $this->data;
    }  
}
$aa = new talker();
$d = &$aa->get();
$aa->out();
$d = 'How';
$aa->out();
$d = 'Are';
$aa->out();
$d = 'You';
$aa->out();
?>
//the output is "HiHowAreYou"

Ich glaube, nachdem Sie den Fall in diesem Artikel gelesen haben, beherrschen Sie die Methode der Funktionsreferenz. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website!

Verwandte Artikel:

Referenzparameter und Anzahl der Parameter der PHP-Funktion

PHP - Function_Study Notes Verweise auf PHP-Funktionen, PHP-Verzögerungsfunktion PHP-Sortierfunktion

Eingehende Analyse des PHP-Ausführungsprinzips (2): Funktionskompilierung, PHP-Verschlüsselungsfunktion, PHP-Funktionsreferenz, PHP-Verzögerungsfunktion

Das obige ist der detaillierte Inhalt vonReferenz und Rückgabe von PHP-Funktionen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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