Jörg Reinholz: Merkwürdiges Verhalten bei mySQL Anfrage

Beitrag lesen

Moin!

Also die foreach Schleife wird mir wahrscheinlich noch lange ein Rätsel bleiben.

Die ist aber genial, weil die einfach alle Elemente eines Arrays durchackert.

Stell Dir eine Variable als "Eimer" vor, auf dem der Name steht. Stell Dir Array als Reihe von "Eimern" vor, vor der ein Schild mit dem Name der Reihe und auf jedem Eimer eine Nummer (ist es ein assoziatives Array dann ein weiterer Name) steht.

Foreach ackert einfach einfach eine solche Reihe durch und bringt bei jedem Durchlauf den Wert aus einem der Eimer der Reiher in einem Transporteimer mit:

für jeden Eimer der Reihe bringe eine Kopie dessen Inhalts im Transporteimer und mache folgendes{
...
}
foreach ($Eimer as $Transporteimer) {
   echo "Im Eimer ist: $Transporteimer";
}

oder:

foreach ($array as $Kopie) {
   echo "array enthält Element mit Wert: $Kopie";
}

Benutzt man stets, wenn die Position des untersuchten Eimers in der Reihe der Eimer nicht interessiert...

und ist weniger aufwendig zu notieren als:

for ($i=0; $i < count($Eimer); $i++
   echo "Im Eimer ist: ", $Eimer[$i];
}

und damit weniger fehlerträchtig.

Und diese Numerische Notation finde ich super da ich hier viel mit Matritzen arbeite

Auch hier. Du hast eine Datenbank-Tabelle mit Spalten, die Namen haben. PHP hat die Freundlichkeit, Dir für jede Spalte ein Array-Element mit dem Name zu liefern.

Der Spaß beginnt erst richtig, wenn Du in die Tabelle mal eine weitere Spalte einfügst. Hast Du mit den Namen gearbeitet, dann musst Du gar nichts tun. Hast Du aber mit den numerischen Indizierern gearbeitet - dann "Viel Spaß bei der Arbeit!". (Aus ganz ähnlichen Gründen soll man in der Abfrage nicht das unkluge 'SELECT * FROM foo' benutzen)

Zumal es durchaus sein kann, dass nicht gleich auffällt und Dein Programm halt "nur" falsche Daten (nämlich aus der falschen Spalte) ausgibt. Das "nur" kann im Ergebnis den Supergau bedeuten, weil, bis der Fehler auffällt inzwischen 1.000.000 Autos an der Stelle, wie Bremsscheiben für die Vorderräder sein sollen, die für die Hinterräder haben ...

Jörg Reinholz