Frage von xBlackMass, 38

Was bringt mir in PHP ein leeres Array(Siehe bild)?

Warum ist dieser Array leer. (Rot markiere) Man könnte den Code ja auch ganz anders schreiben oder? Danke

Antwort
von mastema666, 6

Das ist zwar nicht zwingend nötig, jedoch verhindert man dadurch auch mögliche Fehler, wenn man z.B. das Array abfragen (z.B. den Inhalt oder auch die Länge) will, ohne es vorher deklariert zu haben, so würde PHP eine Notice ausgeben, das ist zwar kein wirkliches Problem, es weist einen nur darauf hin, dass man da eine Variable als Array benutzen will, die gar kein Array ist, aber je nachdem wie oft das vorkommt ist das schon mal nicht so angenehm für die Übersicht beim Debuggen des Codes.

Zudem gibt es auch Funktionen, die erfordern, dass man ihnen ein Array übergibt, wenn man z.B. "array_push" eine nicht deklarierte Variable übergibt statt eines Array, dann funktioniert das nicht und man bekommt nur eine Fehlermeldung, das Array wird dann nicht automatisch erstellt wie bei z.B. "$array[] = 'hallo';" oder so. 

Je nachdem wie man das Array nachher befüllt kann es natürlich auch problemlos funktionieren ohne es vorher als solches zu deklarieren (mal abgesehen von der Übersicht beim Debuggen halt), aber weil es eben nicht immer funktioniert ist es halt üblich, das man eine Variable als solche deklariert (gilt auch für Objekte, bei Strings oder Int z.B. ist es nicht wirklich nötig, wobei ich diese auch immer einmalig mit "0" oder als leeren String initialisieren würde, weil man so u.a. halt die Notice vermeidet, was das Debuggen einfacher macht).

Kommentar von fluffiknuffi2 ,

Ich glaube du hast deine Aussagen so formuliert das sie streng genommen stimmen. Dennoch finde ich, sie sollten strikter formuliert werden.

Variablen müssen immer deklariert werden! Nicht weil es nicht anders geht, aber der intelligente Mensch versuchst ja auch nicht, mit geschlossenen Augen Autobahn zu fahren, nur weil es geht. Nein, Variablen werden immer deklariert, alles andere ist falsch! Möglich aber im Sinne guter Programmierung falsch!

Notices sind zwar streng genommen keine Fehlermeldungen aber vom Entwickler während der Entwicklung als solche zu behandeln, sprich zu beseitigen! Denn Notices deuten auf ein Problem hin! Dementsprechend ist während der Entwicklung error_reporting auf E_ALL zu stellen, damit Notices angezeigt werden.

Kommentar von mastema666 ,

Naja, Variablen "müssen" eigtl deklariert werden, das stimmt natürlich, das "Problem" ist halt, dass es oft trotzdem auch dann funktioniert, wenn man es nicht tut. Das ist halt bestenfalls unsauber und wird oft einfach aus Faulheit gemacht, das sollte man sich aber besser gar nicht erst angewöhnen (und es gibt ja wie gesagt auch Fälle, wo es dann eben gar nicht mehr funktionieren würde).

Und bzgl der Notices, wenn die egal wären, würde PHP die ja gar nicht ausgeben, und es beugt natürlich auch Folgeproblemen vor wenn man sie einfach direkt vermeidet bzw korrigiert falls sie doch mal auftreten (wobei ich leider aber auch nicht selten Dinge höre wie "ist doch egal, funktioniert ja", ich kenne sogar jemand, der bewusst immer mit ~E_NOTICE arbeitet, "weil das nervt"...).

Antwort
von fluffiknuffi2, 9

Kommt auf die Umstände an und was genau du meinst.

Aber wenn man zunächst einmal die Werte (und ggf. Schlüssel) nicht kennt, die man einem Array zuweisen will, dann erstellt man zunächst einen leeren Array. [Natürlich kann man jetzt Beispiele finden bei denen das nicht nötig ist  aber das sind für mich Ausnahmen der Regel.]

Antwort
von xdxderich, 15

Dieses Beispiel soll zeigen, dass man einem leeren Array auch nachträglich noch Einträge hinzufügen kann. Das kann z.B. dann praktisch sein, wenn die Werte vorher noch nicht bekannt sind. Also wenn diese z.B. vom Benutzer über ein Formular eingegeben werden. Wobei man das Array natürlich auch erst dann erstellen könnte, wenn die entsprechenden Werte vorhanden sind... Je nachdem, wo das ganze deklariert werden muss ^^

Es zeigt einfach nur, dass es möglich ist. Ob und wie man das ganze verwendet, ist für das Beispiel ja relativ egal. Es gibt so gut wie immer mehrere Wege um etwas zu programmieren...

Antwort
von LeonardM, 8

Da wirds eben deklariert. Die definierung kann wie üblich direkt oder nachträglich erfolgen

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten