2010-09-13 5 views
5

Während eine aktuelle Anwendung zu schreiben, begann ich aus Versehen ein Array füllen, bevor ich es erklärt hatte.Muss ein PHP-Array vor der Verwendung deklariert werden?

error_reporting (E_ALL); 
$array['value'] = 'Test string'; 

Ich benutze E_ALL Fehlerberichte und ein Fehler wurde nicht ausgelöst. Ist das richtig? Und wenn ja, gibt es irgendwelche Probleme mit Array-Werten zu deklarieren, während das Array niemals deklariert wird? Vielleicht folgt es einfach nicht den guten Programmierstandards.

+0

Wenn Sie sagen, „nicht geworfen“ meinen Sie es nicht auf dem Bildschirm zeigen, haben oder es nicht angemeldet war (wenn Ihr Protokollierungsstufe richtig eingestellt ist). Wenn es angemeldet wurde und nicht zeigen Ihre display_errors überprüfen in der php.ini Einstellung (sollte auf 1 gesetzt werden) - Dies ist eine gute Referenz: http://php.net/manual/en/errorfunc.configuration.php – jlindenbaum

Antwort

4

Während eine aktuelle Anwendung zu schreiben begann ich versehentlich ein Array füllen , bevor ich es erklärt hatte.

PHP ist eine schwach typisierte Sprache. Ihre Aussage:

$array['value'] = 'Test string'; 

ist eine implizite Deklaration (durch Zuweisung) eines assoziativen Arrays. Daher wird keine Benachrichtigung generiert.

Wenn Sie jedoch schreiben sind:

echo $array['value']; 

vor einem assigment, dann erhalten Sie eine Undefined variable Mitteilung erhalten.

3

Nein, Sie haben nicht zu

Und ja, es ist eine gute Gewohnheit, das Array zu deklarieren Code eine Ablesbarkeit

2

Um auf das zu erweitern, nicht Sie nicht „haben“ zu, nicht zu erhöhen aber es kann vorteilhaft sein.

Auch wenn Sie E_NOTICES ausgeschaltet haben, dann werden Sie keine Fehler aus einer nicht nicht initialisierten Variablen sehen. Bei der Produktion sollten Sie es ausschalten, aber bei der Entwicklung sollten Sie es einschalten. Es ermöglicht Ihnen, Probleme zu finden, die Sie möglicherweise nicht sehen.

+1

Ich stimme zu. Es ist immer gut, ein Array vor der Verwendung zu deklarieren. –

+3

Auch kein Grund, es bei der Produktion auszuschalten. Ich meine, wenn dein Code sauber ist, wird nichts gemeldet. –

+0

„On Produktion sollten Sie ihn ausschalten“ Warum? Sicher "Dev-Testing sollte Fehler vor Prod beheben", aber was ist, wenn sie nicht? Wie auch immer es unwahrscheinlich ist, wenn Probleme in Prod auftreten, möchten Sie sie sehen. Wenn Sie die Fehlerberichterstattung haben diese sogar in Prod zu zeigen, und es gibt Fehler, dann fangen Sie sie, und wenn es keine Fehler gibt, dann gibt es entweder keine Protokolle. Es gibt also keine Gründe, die Produktion abzuschalten. – James

Verwandte Themen