Warum gibt es beim ersten Aufruf keinen E_NOTICE Fehler?

8

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.

    
Martin Vseticka 17.12.2013, 23:05
quelle

3 Antworten

1

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.

    
sectus 26.05.2014 04:51
quelle
0

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.

    
Robert 18.12.2013 13:26
quelle
-3

Nur error_reporting(1) verwenden  an der Spitze der PHP-Datei ...

    
Satish Rajput 21.02.2014 13:58
quelle

Tags und Links