2017-12-31 113 views
1

Ich verwende PHP 7.2.0Wie funktioniert Verschachtelung Null Koaleszenz-Operator (??) in PHP? Schritt-für-Schritt Benötigen Erklärung der Ausführung fließt

ich die normale grundlegende Verwendung von null Koaleszierstruktur Operator verstanden habe (??) aber ich bin nicht in der Lage Verstehen des Ausführungsflusses und der Funktionalität, wenn der Nullkoaleszenzoperator (??) verschachtelt ist.

Bitte beachten Sie das nachfolgende Codebeispiel und erläutern Sie mir den Ablauf der Ausführung Schritt für Schritt.

<?php 

$foo = null; 
$bar = null; 
$baz = 1; 
$qux = 2; 

echo $foo ?? $bar ?? $baz ?? $qux; // outputs 1 

?> 
+1

Der erste Eintrag, der nicht leer ist, wird wiederholt; $ foo und $ bar sind beide leer, aber $ baz ist nicht leer –

Antwort

4

Ich denke, Ihr Beispiel wird sauberer, wenn Sie Parens um die einzelnen Schritte des null Koaleszenzoperators hinzufügen.

echo ($foo ?? ($bar ?? ($baz ?? $qux))); 

Grundsätzlich ist es das gleiche wie die Ausführung von links nach rechts.

Der Nullkoaleszenzoperator ist rechts assoziativ. Das bedeutet, dass Vorgänge von rechts nach links gruppiert werden. Das heißt, der Ausdruck a ?? b ?? c wird als a ?? (b ?? c) ausgewertet.

1

Es funktioniert in ähnlicher Weise wie es in seiner grundlegenden Verwendung funktioniert.

Die Strömungs Ausführung wird wie folgt sein:

  1. Es prüft isset($foo) ist es nicht gesetzt worden ist, es enthält NULL so, gehen Sie für $bar
  2. Es prüft isset($bar) ist es nicht gesetzt worden ist, es auch ist enthält NULL so , gehen Sie für $baz
  3. Es überprüft isset($baz) es ist eingestellt worden, es enthält den Wert 1 so, es wird gedruckt und Ausführung stoppt.
Verwandte Themen