Es gibt 3 var_dumps in diesem Code (der zweite ist auskommentiert).
Wenn ich es ausführen, erzeugen die erste und die dritte var_dumps wie erwartet eine Benachrichtigung (beides).
Nach dem Auskommentieren des zweiten var_dump beendet der dritte var_dump das Auslösen einer Nachricht.
Meine Frage ist: warum?
Ich würde immer noch einen Hinweis dort erwarten, denn in der 3. var_dump lese ich immer noch eine Variable, die vorher nicht gesetzt ist (wie das isset anzeigt).Der Aufruf von unset-Variablen ruft keine Benachrichtigung nach dem Aufruf als Referenz auf
<?php
function nvl(&$var, $default = 'hello')
{
return !isset($var) ? $default : $var;
}
var_dump($a, isset($a));
//var_dump(nvl($a), isset($a));
var_dump($a, isset($a));
Wenn diese Zeile 'var_dump (nvl ($ a), isset ($ a));' un-kommentiert ist, dann wird $ a erstellt –
Da Sie die Funktion aufrufen und die Variable als Referenz übergeben, erstellen Sie sie: http : //php.net/manual/en/language.references.whatdo.php – Rizier123
Nein, $ a wird nicht erstellt. Immer wenn ich nach nvl ($ a) frage, ob $ a gesetzt ist, lautet die Antwort nein. Was gut ist, denn das ist nicht der Sinn dieser Funktion. –