Ich habe ein folgendes Code-Snippet:
%Vor% Und die Frage ist: Warum gibt es keinen E_NOTICE
Fehler beim ersten Aufruf? Die Erklärung ist höchstwahrscheinlich, dass die Variable $data['hey']
erzeugt wird, um eine Referenz zurückzugeben. Es scheint jedoch immer noch falsch, keinen E_NOTICE-Fehler auszugeben, wenn $data['hey']
(oder $whatever
, ...
) nicht definiert ist.
Es ist erwartetes Verhalten
Wenn Sie eine undefinierte Variable als Referenz zuweisen, übergeben oder zurückgeben, wird sie verwendet wird erstellt.
Und einige verwandte "Bugs":
Ok, es scheint, dass das Element erstellt wird, weil wir es versuchen um eine Referenz auf etwas zurückzugeben, das nicht existiert.
Wenn Sie versuchen, auf ein nicht existierendes Array-Element zuzugreifen, können Sie dies effektiv tun Erstellen Sie es, daher die NULL-Einträge im Array.
Ich denke, dass es sich auf Referenz und seine Schwächen in PHP bezieht.
Wenn Sie in PHP referenzieren, wird die Bindung erstellt. Die Eingabe von PHP-Objekten ist nicht streng und PHP weiß nicht, auf welche Art von Objekt verwiesen wird. Der Interpreter geht davon aus, dass ['hey']
möglicherweise im Objekt existiert.
PHP fehlt die späte Bindung und strenge Typisierung. Deshalb kommen manchmal solche "komischen" Dinge vor.
Nur error_reporting(1)
verwenden
an der Spitze der PHP-Datei ...
Tags und Links php