Heim  >  Artikel  >  Backend-Entwicklung  >  Gültigkeitsbereich der PHP-Abschlussvariablen

Gültigkeitsbereich der PHP-Abschlussvariablen

藏色散人
藏色散人nach vorne
2019-12-30 13:21:172409Durchsuche

In Projekten ist es unvermeidlich, auf die Form von Abschlüssen zu stoßen. Was ist also der Umfang von Variablen in Abschlüssen? Hier ein paar einfache Beispiele.

e1

function test_1()
{
    $a = 'php';
    $func =  function ($b) use ($a)
    {
       // $a = 'java';
        echo $b.'_'.$a;
    };
    return $func;
}
$test = test_1();
$test('hello');

Das obige Ergebnis gibt hello_php aus, dann können Sie sehen, dass $a als Variable durch die Verwendung an die anonyme Funktion func als Parameter übergeben wird; Wenn $ ein = 'java'-Kommentar entfernt wird, wird das obige Ergebnis hello_java ausgeben

e2: Schreiben Sie die obige Funktion um als

function test_2()
{
    $a = 'php';
    $func =  function ($b) use ($a)
    {
       // $a = 'go';
        echo $b.'_'.$a;
    };
    $a = 'java';
    return $func;
}
$test = test_2();
$test('hello');

Das obige Ergebnis gibt hello_php aus . Die Beschreibung befindet sich in test_2. Wenn $a zum zweiten Mal ein Wert zugewiesen wird, wird dieser nicht an die Funktion func übergeben.

In ähnlicher Weise wird, wenn $a = 'go' entfernt wird, das obige Ergebnis hello_go ausgegeben

e3: Fügen Sie nun einen Verweis auf $a hinzu

function test_3()
{
    $a = 'php';
    $func =  function ($b) use (&$a)
    {
        //$a = 'go';
        echo $b.'_'.$a;
    };
    $a = 'java';
    return $func;
}
$test = test_3();
$test('hello');

Das obige Ergebnis gibt hello_java aus, was darauf hinweist, dass der Wert der Variablen a an die Funktion func übergeben wird, wenn auf die Adresse verwiesen wird.

Ähnlich, wenn $a = 'go' entfernt wird;

Das obige Ergebnis gibt hello_go aus;

Die oben genannten drei einfachen Tests erklären deutlich den Abschluss. Der Umfang des Parameter im Inneren.

Wenn keine Adressreferenz verwendet wird, ändert sich der Variablenwert der anonymen Funktion nicht, wenn sich die externe Variable ändert. (Bedeutung des Abschlusses)

Nach Verwendung der Adressreferenz wird der Parameterwert durch den Parameterwert der externen Funktion geändert.

Weitere PHP-Kenntnisse finden Sie im PHP-Tutorial!

Das obige ist der detaillierte Inhalt vonGültigkeitsbereich der PHP-Abschlussvariablen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen