Rolf B: mehrdimensionales Array durchsuchen

Beitrag lesen

Hallo TS,

Allerdings sollte hier Postels Gesetz gelten: „Sei streng bei dem, was du tust, und offen bei dem, was du von anderen akzeptierst.“

Das ist auch die verwissenschaftlichte Antwort auf deine Frage, warum man in PHP Arraybezeichner/-Zeiger immer mit dem leeren Arraytyp ($_arr = array()) initialisieren sollte.

Es ist eine Sache, ob man einer uninitialisierte Variablen einfach eine Arrayzuweisung aufdrückt, also sowas wie

$schlumpf = null;
$schlumpf[2] = "Gargamel";

PHP lässt das idiotischerweise zu und derjenige, der so programmiert, gehört blau angemalt. Wenn in $schlumpf etwas anderes drinsteht, vor allem ein Skalarwert, dann macht's bum.

Es ist eine andere Sache, sowas hier zu tun - vorausgesetzt, $_record wird nach der Schleife nicht mehr verwendet:

$_record = array();
foreach ($_starships as $key => $_record) 
{
   // code code code $_record code code code
}

Diese Initialisierung ist dann und nur dann nötig, wenn $_record nach der Schleife verwendet wird. Sie deckt den Fall ab, dass $_starships leer ist und der foreach kein einziges Mal betreten wird. In dem Fall sollte man aber auch $key initialisieren. Ein hübsches Konstrukt wie foreachelse, dass bspw. Smarty kennt, fehlt im nativen PHP. Das wurde zwar schon mindestens drölfmal in verschiedenen Formen als PHP Verbesserungsvorschlag eingebracht, aber von den PHP Sprachbewahrern immer abgelehnt. Ist vermutlich besser so... 😉

Für den Code innerhalb der Schleife ist die Initialisierung irrelevant, weil PHP $key und $_record pro Durchlauf mit Werten aus dem Array befüllt.

Rolf

--
sumpsi - posui - obstruxi