Hallo liebe Community,
ich möchte euch mit diesem kleinen Thread hier die For-Schleife in PHP näher bringen. Dies wird aber eher eine kleine Sammlung. Selbstverständlich folgen noch weitere Schleifenarten.
[SIZE="5"]Warum überhaupt Schleifen[/SIZE]
Schleifen dienen dazu um einen bestimmten Code-Teil mehrmals hintereinander zu durchlaufen bis eine bestimmte Bedingung eintritt.
Dies hat nicht nur den Vorteil dass man sich unmengen an Code spart, sondern die Schleifen sind zusätzlich dynamisch definierbar was das Leben in PHP und sehr sehr vielen anderen Sprachen vereinfacht.
Fangen wir mit der For-Schleife an.
[SIZE="5"]Die For-Schleife[/SIZE]
Beginnen wir mit der For-Schleife. Sie ist mein persönlicher favorit. Sie wird in der Regel benutzt, wenn man schon beim Schreiben des Codes die Anzahl der Schleifendurchläufe kennt.
Nehmen wir an wir basteln uns ein Karten Browsergame, whatever und ihr wisst genau, dass immer 5 Karten gezogen werden
d.H. ihr müsstet theoretisch ohne die Schleife 5x den Code für das ziehen einer Karte schreiben. Mit einer For-Schleife machen wir das aber in einem kurzen Codeblock.
Wenn es darum ginge ein Karten-Browsergame zu coden dürft ihr mich gerne steinigen, die Erfahrenen PHP`ler von euch dürften bemerkt haben, dass das was in der Schleife steht nur ein Crash-Test-Dummy ist. Dazu später mehr. Sehen wir uns erstmal das Schleifenkonstrukt an. Dies beginnt mit einem for. In den folgenden Klammern stehen dann die Ausdrücke. Der erste Ausdruck, in unserem Fall und in sehr sehr vielen eurer zukünftigen Fällen ist das "$i = 0;" Dies könnt ihr euch vorstellen wie ein normale Variablendeklaration, klar ist auch so. Die Schleifenvariable $i wird einmal am Anfang der Schleife auf 0 gesetzt. Warum grade $i? Nunja, $i ist eben die Schleifenvergewaltigungsvariable schlechthin und wird in fast allen Sprachen so benutzt. Selbstverständlich könnt ihr sie auch $herbert oder $uschi nennen, spielt keine Rolle.
Der nächste Ausdruck stellt die Bedingung dar, was muss geschehen damit die Schleife beendet wird? In unserem Fall wird die Schleife 5 mal durchlaufen, da die Durchlaufbedingung sagt "$i < 5;". Einige werden nun den Logikfehler machen und sich fragen, wenn $i kleiner als 5 sein soll, wieso wird die Schleife 5 mal durchlaufen? Ganz einfach, wir haben $i auf 0 deklariert d.H. sie läuft folgendermaßen durch "0,1,2,3,4" wer zählen kann wird festellen dass es 5 durchläufe sind. Nachdem die Durchlaufbedingung erfüllt wurde wird die Schleife verlassen und es geht weiter im Code.
Der letzte Ausdruck ist die Durchlaufanweisung. Die Schleife führt diesen Code aus sobald der Schleifeninhalt durchlaufen wurde. Dies passiert in unserem Beispielcode genau 5 mal. d.H. die Variable $i wird am Ende jedes Schleifendurchlaufs erhöht. "$i++" ist nur eine Kurzschreibweise von "$i = $i+1".
Nun ihr seht, es wird nun 5x die Variable $karte um 1 erhöht. Anstatt dies umständlich in 5 Zeilen abzuhandeln und alles untereinander zu schreiben, haben wir eine kleine Komfortable Schleife. Stellt euch vor die ganzen Checks etc... würden noch dazu kommen, diese alle 5x manuell jedes mal neu zu machen und Copy & Paste kommen nicht immer gut? Oder ihr stellt euch schlicht und einfach ein Kartenspiel vor in dem man nicht 5 Handkarten hat sondern 50. Ihr seht also, Schleifen sind ein mächtiges Werkzeug.
So. Nun wollen wir aber etwas Dynamik in unsere For-Schleife bringen. Wir wollen ein For-Schleife bilden, die Durchlaufbedingung aber ist dynamisch und wir kennen sie nicht vorher, da wir immer Werte hinzufügen, oder abziehen können. Hier dass Beispiel.
Zuerst legen wir das Array, $array an. In diesem befinden sich die Werte 1, 29, 551, 5 und 78. Diese wollen wir nun mit einer For-Schleife ausgeben lassen. Klar, wir wissen dass sich in diesem Array nun 5 Elemente befinden. Wir könnten ja einfach als Durchlaufbedingung in der For-Schleife, 5 angeben. Die Problematik: Was ist wenn wir dem Array weitere Elemente hinzufügen würden und dabei aber nicht die Durchlaufbedingung der Schleife ändern? Sie würde ganz einfach alle nach 5 folgenden Elemente ignorieren und ständig nur die ersten 5 Elemente ausgeben.
Der Gedankenzug ist folgender. Wir müssen eine dynamische Möglichkeit finden um die Anzahl der Arrayelemente auszulesen. PHP schafft glücklicherweise Abhilfe, mit der Funktion: "count()". Diese liest die Anzahl der Arrayelemente in dem als Parameter übergebenen Array aus. In unserem Fall also 5.
Dies habe ich nun in der obigen Schleife auch umgesetzt. Die Durchlaufbedingung lautet also: "$i < count($array);". Nun können wir beliebig Werte zum Array hinzufügen oder abziehen, wie wir grade lustig sind. Die Schleife würde immer die Anzahl der Arrayelemente dynamisch erkennen.
Der Schleifeninhalt besteht ganz schlicht und einfach aus der Ausgabe aller Arrayelemente. Jedes Arrayelement besitzt einen sogenannten Index. Dieser Index hat einen Wert. Arrayindexe fangen immer bei 0 an. Bei unserem beispiel-Array würde die Zuordnung der Indizes und deren Werte es also folgendermaßen aussehen:
würden wir z.B. also echo array[2]; schreiben würden wir die Ausgabe 511 erhalten. In der For Schleife aber wird bei jedem Schleifendurchlauf der Index bei der Ausgabe auf den aktuellen Wert von $i gesetzt. Nun dürfte sich auch die Frage geklärt haben warum man bei For-Schleifen die Startanweisung immer auf 0 deklariert. Schlicht und einfach weil ein Arrayindex bei 0 beginnt =)
So, dass wars erstmal. Ich werde bei Bedarf evtl. noch weiteres zu dieser Schleifenart hinzufügen wenn ich es für relevant empfinde oder etwas wichtiges vergessen habe.
Bitte seid so fair und kopiert diesen Guide nicht in alle Welt herum. Es ist ein exklusiv Werk für MMORPG-Core und so soll es auch bleiben. Wenn manche von euch sich aber schon mit fremden Federn schmücken müssen, gebt wenigstens einen Link zu der Qulle des Guides an.
Grüße,
Lunatic
ich möchte euch mit diesem kleinen Thread hier die For-Schleife in PHP näher bringen. Dies wird aber eher eine kleine Sammlung. Selbstverständlich folgen noch weitere Schleifenarten.
[SIZE="5"]Warum überhaupt Schleifen[/SIZE]
Schleifen dienen dazu um einen bestimmten Code-Teil mehrmals hintereinander zu durchlaufen bis eine bestimmte Bedingung eintritt.
Dies hat nicht nur den Vorteil dass man sich unmengen an Code spart, sondern die Schleifen sind zusätzlich dynamisch definierbar was das Leben in PHP und sehr sehr vielen anderen Sprachen vereinfacht.
Fangen wir mit der For-Schleife an.
[SIZE="5"]Die For-Schleife[/SIZE]
Beginnen wir mit der For-Schleife. Sie ist mein persönlicher favorit. Sie wird in der Regel benutzt, wenn man schon beim Schreiben des Codes die Anzahl der Schleifendurchläufe kennt.
Nehmen wir an wir basteln uns ein Karten Browsergame, whatever und ihr wisst genau, dass immer 5 Karten gezogen werden
d.H. ihr müsstet theoretisch ohne die Schleife 5x den Code für das ziehen einer Karte schreiben. Mit einer For-Schleife machen wir das aber in einem kurzen Codeblock.
Wenn es darum ginge ein Karten-Browsergame zu coden dürft ihr mich gerne steinigen, die Erfahrenen PHP`ler von euch dürften bemerkt haben, dass das was in der Schleife steht nur ein Crash-Test-Dummy ist. Dazu später mehr. Sehen wir uns erstmal das Schleifenkonstrukt an. Dies beginnt mit einem for. In den folgenden Klammern stehen dann die Ausdrücke. Der erste Ausdruck, in unserem Fall und in sehr sehr vielen eurer zukünftigen Fällen ist das "$i = 0;" Dies könnt ihr euch vorstellen wie ein normale Variablendeklaration, klar ist auch so. Die Schleifenvariable $i wird einmal am Anfang der Schleife auf 0 gesetzt. Warum grade $i? Nunja, $i ist eben die Schleifenvergewaltigungsvariable schlechthin und wird in fast allen Sprachen so benutzt. Selbstverständlich könnt ihr sie auch $herbert oder $uschi nennen, spielt keine Rolle.
Der nächste Ausdruck stellt die Bedingung dar, was muss geschehen damit die Schleife beendet wird? In unserem Fall wird die Schleife 5 mal durchlaufen, da die Durchlaufbedingung sagt "$i < 5;". Einige werden nun den Logikfehler machen und sich fragen, wenn $i kleiner als 5 sein soll, wieso wird die Schleife 5 mal durchlaufen? Ganz einfach, wir haben $i auf 0 deklariert d.H. sie läuft folgendermaßen durch "0,1,2,3,4" wer zählen kann wird festellen dass es 5 durchläufe sind. Nachdem die Durchlaufbedingung erfüllt wurde wird die Schleife verlassen und es geht weiter im Code.
Der letzte Ausdruck ist die Durchlaufanweisung. Die Schleife führt diesen Code aus sobald der Schleifeninhalt durchlaufen wurde. Dies passiert in unserem Beispielcode genau 5 mal. d.H. die Variable $i wird am Ende jedes Schleifendurchlaufs erhöht. "$i++" ist nur eine Kurzschreibweise von "$i = $i+1".
Nun ihr seht, es wird nun 5x die Variable $karte um 1 erhöht. Anstatt dies umständlich in 5 Zeilen abzuhandeln und alles untereinander zu schreiben, haben wir eine kleine Komfortable Schleife. Stellt euch vor die ganzen Checks etc... würden noch dazu kommen, diese alle 5x manuell jedes mal neu zu machen und Copy & Paste kommen nicht immer gut? Oder ihr stellt euch schlicht und einfach ein Kartenspiel vor in dem man nicht 5 Handkarten hat sondern 50. Ihr seht also, Schleifen sind ein mächtiges Werkzeug.
So. Nun wollen wir aber etwas Dynamik in unsere For-Schleife bringen. Wir wollen ein For-Schleife bilden, die Durchlaufbedingung aber ist dynamisch und wir kennen sie nicht vorher, da wir immer Werte hinzufügen, oder abziehen können. Hier dass Beispiel.
Zuerst legen wir das Array, $array an. In diesem befinden sich die Werte 1, 29, 551, 5 und 78. Diese wollen wir nun mit einer For-Schleife ausgeben lassen. Klar, wir wissen dass sich in diesem Array nun 5 Elemente befinden. Wir könnten ja einfach als Durchlaufbedingung in der For-Schleife, 5 angeben. Die Problematik: Was ist wenn wir dem Array weitere Elemente hinzufügen würden und dabei aber nicht die Durchlaufbedingung der Schleife ändern? Sie würde ganz einfach alle nach 5 folgenden Elemente ignorieren und ständig nur die ersten 5 Elemente ausgeben.
Der Gedankenzug ist folgender. Wir müssen eine dynamische Möglichkeit finden um die Anzahl der Arrayelemente auszulesen. PHP schafft glücklicherweise Abhilfe, mit der Funktion: "count()". Diese liest die Anzahl der Arrayelemente in dem als Parameter übergebenen Array aus. In unserem Fall also 5.
Dies habe ich nun in der obigen Schleife auch umgesetzt. Die Durchlaufbedingung lautet also: "$i < count($array);". Nun können wir beliebig Werte zum Array hinzufügen oder abziehen, wie wir grade lustig sind. Die Schleife würde immer die Anzahl der Arrayelemente dynamisch erkennen.
Der Schleifeninhalt besteht ganz schlicht und einfach aus der Ausgabe aller Arrayelemente. Jedes Arrayelement besitzt einen sogenannten Index. Dieser Index hat einen Wert. Arrayindexe fangen immer bei 0 an. Bei unserem beispiel-Array würde die Zuordnung der Indizes und deren Werte es also folgendermaßen aussehen:
0 => 1
1 => 29
2 => 511
3 => 5
4 => 78
würden wir z.B. also echo array[2]; schreiben würden wir die Ausgabe 511 erhalten. In der For Schleife aber wird bei jedem Schleifendurchlauf der Index bei der Ausgabe auf den aktuellen Wert von $i gesetzt. Nun dürfte sich auch die Frage geklärt haben warum man bei For-Schleifen die Startanweisung immer auf 0 deklariert. Schlicht und einfach weil ein Arrayindex bei 0 beginnt =)
So, dass wars erstmal. Ich werde bei Bedarf evtl. noch weiteres zu dieser Schleifenart hinzufügen wenn ich es für relevant empfinde oder etwas wichtiges vergessen habe.
Bitte seid so fair und kopiert diesen Guide nicht in alle Welt herum. Es ist ein exklusiv Werk für MMORPG-Core und so soll es auch bleiben. Wenn manche von euch sich aber schon mit fremden Federn schmücken müssen, gebt wenigstens einen Link zu der Qulle des Guides an.
Grüße,
Lunatic