Heim  >  Artikel  >  Backend-Entwicklung  >  Zusammenfassung mehrerer von PHP zitierter Anwendungsbeispiele

Zusammenfassung mehrerer von PHP zitierter Anwendungsbeispiele

伊谢尔伦
伊谢尔伦Original
2017-07-17 16:35:181681Durchsuche

PHP-Referenz (d. h. das Hinzufügen eines kaufmännischen Und-Zeichens vor einer Variablen, Funktion, einem Objekt usw.). Die Referenz in PHP bedeutet: Verschiedene Namen greifen auf denselben Variableninhalt zu. Es unterscheidet sich von Zeigern in der C-Sprache. Der Zeiger in der Sprache C speichert den Inhalt der Variablen und die im Speicher gespeicherte Adresse.

1. Variablenreferenzen
PHP-Referenzen ermöglichen die Verwendung von zwei Variablen, um auf denselben Inhalt zu verweisen

<?php
    $a="ABC";
    $b =&$a;
    echo $a;//这里输出:ABC
    echo $b;//这里输出:ABC
    $b="EFG";
    echo $a;//这里$a的值变为EFG 所以输出EFG
    echo $b;//这里输出EFG
?>

2. Funktionsreferenzübertragung (Aufruf nach Adresse)
Ich werde nicht näher auf die Call-by-Adresse eingehen.

<?php
    function test(&$a)
    {
        $a=$a+100;
    }
    $b=1;
    echo $b;//输出1
    test($b);   //这里$b传递给函数的其实是$b的变量内容所处的内存地址,通过在函数里改变$a的值 就可以改变$b的值了
    echo "<br>";
    echo $b;//输出101
?>

Es ist zu beachten, dass bei Verwendung von test(1); ein Fehler auftritt . Sie sollten selbst über den Grund nachdenken.
Hinweis: Fügen Sie im obigen „test($b);“ nicht das kaufmännische Und vor $b hinzu, sondern in der Funktion „call_user_func_array“. Wenn Sie auf die übergebenen Parameter verweisen möchten, benötigen Sie das kaufmännische Und. wie im folgenden Code gezeigt:

<?php
function a(&$b){
    $b++;
}
$c=0;
call_user_func_array(&#39;a&#39;,array(&$c));
echo $c;
//输出 1
?>

3. Funktionsreferenzrückgabe
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 $a= test(); erhalten Tatsächlich handelt es sich nicht um eine Referenzrückgabe der Funktion. Es unterscheidet sich nicht von einem gewöhnlichen Funktionsaufruf. Der Grund: Dies ist die Regulierung von PHP
PHP schreibt vor, dass die Referenzrückgabe der Funktion ist erhalten durch $a=&test();
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 mich lange Zeit nicht verstehen lassen

4. Objektreferenz

<?php
    class a{
        var $abc="ABC";
    }
    $b=new a;
    $c=$b;
    echo $b->abc;//这里输出ABC
    echo $c->abc;//这里输出ABC
    $b->abc="DEF";
    echo $c->abc;//这里输出DEF
?>

Der obige Code ist der laufende Effekt in PHP5

In PHP5 ist der Bei der Zuweisung eines Objekts handelt es sich um einen Referenzvorgang. In der obigen Spalte ist $b=new a; $c=$b; tatsächlich äquivalent zu $b=new $c=&$b;
Die Standardeinstellung in PHP5 ist, dass Objekte per Referenz aufgerufen werden Möglicherweise möchten Sie eine Kopie eines Objekts erstellen und hoffen, dass Änderungen am Originalobjekt keine Auswirkungen auf die Kopie haben. Zu diesem Zweck definiert PHP5 eine spezielle Methode namens __clone.
Ab PHP 5 gibt new automatisch eine Referenz zurück, daher ist die Verwendung von =& hier veraltet und erzeugt eine Nachricht der E_STRICT-Ebene.
In PHP4 ist die Objektzuweisung ein Kopierprozess,
Zum Beispiel: $b=new a, wobei new a eine anonyme a-Objektinstanz erzeugt und $b zu diesem Zeitpunkt für diese anonyme Objektkopie gilt. Ebenso ist $c=$b auch eine Kopie des Inhalts von $b. Um Speicherplatz zu sparen, wird daher in PHP4 $b = new a im Allgemeinen in den Referenzmodus geändert, dh $b = & new a.

5. Die Rolle von Referenzen
Wenn das Programm relativ groß ist, viele Variablen auf dasselbe Objekt verweisen und Sie das Objekt nach der Verwendung manuell löschen möchten, empfehle ich persönlich die Verwendung des „&“ "-Methode und dann $ Clear mit var=null verwenden. Andernfalls verwenden Sie die Standardmethode von PHP5. Darüber hinaus empfiehlt es sich für die Übertragung großer Arrays in PHP5, die Methode „&“ zu verwenden, da diese schließlich spart Speicherplatz.
6. Referenz aufheben
Wenn Sie eine Referenz aufheben, wird lediglich die Bindung zwischen dem Variablennamen und dem Variableninhalt aufgehoben. Dies bedeutet nicht, dass die Variableninhalte zerstört werden. Beispiel:

<?php
    $a = 1;
    $b =& $a;
    unset ($a);
?>

deaktiviert $b nicht, sondern nur $a.
7.Globale Referenz
Beim Deklarieren einer Variablen mit globaler $var wird tatsächlich eine Referenz auf die globale Variable hergestellt. Das ist dasselbe wie:

<?php
    $var =& $GLOBALS["var"];
?>

Das bedeutet, dass beispielsweise unset $var eine globale Variable nicht zurücksetzt.
Wenn eine Referenz einer als global deklarierten Variablen innerhalb einer Funktion zugewiesen wird, ist die Referenz nur innerhalb der Funktion sichtbar. Dies kann durch die Verwendung des Arrays $GLOBALS vermieden werden.
Beispiel: Referenzieren Sie globale Variablen innerhalb einer Funktion

<?php
$var1 = "Example variable";
$var2 = "";
function global_references($use_globals)
{
    global $var1, $var2;
    if (!$use_globals) {
        $var2 =& $var1; // visible only inside the function
    } else {
        $GLOBALS["var2"] =& $var1; // visible also in global context
    }
}
global_references(false);
echo "var2 is set to &#39;$var2&#39;\n"; // var2 is set to &#39;&#39;
global_references(true);
echo "var2 is set to &#39;$var2&#39;\n"; // var2 is set to &#39;Example variable&#39;
?>

Behandeln Sie globale $var als Abkürzung von $var =& $GLOBALS['var'];. Wenn Sie also $var eine weitere Referenz zuweisen, ändert sich nur die Referenz auf die lokale Variable.

Das obige ist der detaillierte Inhalt vonZusammenfassung mehrerer von PHP zitierter Anwendungsbeispiele. 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