Schleifen in PHP - Die Foreach-Schleife

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Schleifen in PHP - Die Foreach-Schleife

      Hallo und herzlich willkommen bei meinem zweiten Schleifentutorial,

      ich hatte eh irgendwann vor meine kleine Tutorialreihe fortzusetzen und der Auslöser zur Entstehung dieses Tutorials war der Wunsch des Users Juky.


      [SIZE="5"]Vorwort[/SIZE]
      Wer mein kleines Tutorial über die For-Schleife gelesen hat dürfte auch mit der Foreach Schleife keine Probleme haben.



      [SIZE="5"]Die Foreach-Schleife[/SIZE]
      Einige von euch haben bereits Assoziationen was die Schleife betrifft, denn sie macht genau das was der Name sagt: "Foreach (= Für jedes)..."
      Nun, ihr wollt bestimmt gerne wissen was dass jetzt nun bedeuten soll. Schlicht und einfach: "Für jedes Element eines Arrays".

      Das ist die Foreach Schleife. Die Schleife wird so oft durchlaufen, wie Elemente im Array sind. Einige von euch denken sich jetzt: "Super, geht auch mit einer For-Schleife". Ich vergreife mich zur demonstration einfach mal an dem kleinen Schnipsel aus dem Forschleifen-Tutorial:

      PHP-Quellcode

      1. <?php
      2. $array = array(1, 29, 511, 5, 78);
      3. for($i = 0; $i < count($array); $i++){
      4. echo $array[$i]."<br />";
      5. }
      6. ?>


      Hier wird genauso die Schleife so oft durchlaufen, wie das Array Elemente hat und auch den Wert jedes Array-Elements kann man ausgeben. Also zum Teufel mit der ForEach-Schleife... oder etwa nicht?

      [SIZE="5"]Ja wie denn jetzt?[/SIZE]

      Nunja, obiges war nur theoretisches Geschwafel, aber wir sind noch nicht dazu gekommen uns die Syntax der Foreach-Schleife anzusehen, welcher nämlich de facto so lautet:

      PHP-Quellcode

      1. $array = array(1,5,9,7,2);
      2. foreach($array AS $key => $value){
      3. //mach was
      4. }


      Okay, nun zur Erklärung. Der Foreachschleife wird zunächst ein Array übergeben. Dieses Array wird dann intern kopiert und dieses quasi neue Array ist, womit Schleifenintern gearbeitet wird.

      Nun, was bedeutet dieses
      $key => $value
      ?
      Ganz einfach, dies ist quasi die Beziehung zwischen dem Array Index und dem dazugehörigen Wert. In unserem Beispiel würde der $array[0] zum Wert 1 gehören, $array[1] zum Wert 5, etc... und genau dies sagt das Statement aus.

      Nur um es erwähnt zu haben, man kann das $key => weglassen und nur
      $array AS $value
      schreiben. In dem Fall hätten wir dann aber keine Beziehungen zu den Array-Indizes und wir hätten nur die Werte. Dadurch würde uns allerdings ein zentrales Feature der ForEach-Schleife durch die Lappen gehen.

      Anm.: $key => $value ist kein vorgeschriebener Syntax, das AS dagegen schon. Auch sowas ist denkbar: foreach($array AS $osama => $binladen)


      [SIZE="5"]May the force be with you[/SIZE]

      Wer ein bisschen Ahnung von PHP hat, dem dürften Assoziative Arrays kein Fremdwort sein. Aber hier ein kurzes Beispiel der Vollständigkeit halber:

      PHP-Quellcode

      1. $array = array("Name" => "Peter", "Alter" => 26, "Wohnohrt" => "München");


      Assoziative Arrays sind einfach Arrays, deren Indizes nicht einfach fortlaufend numerisch sind, sondern einen beliebigen Namen haben können.

      Jetzt dürfte es bei einigen klick gemacht haben, was den Vorteil von ForEach-Schleifen betrifft. Wir können uns Array Indizes mit ausgeben lassen.

      PHP-Quellcode

      1. $wohnorte['Peter'] = 'München';
      2. $wohnorte['Anna'] = 'Hawai';
      3. $wohnorte['Paul'] = 'Mogadischu';
      4. $wohnorte['Jan'] = 'Hamburg';
      5. $wohnorte['Felix'] = 'der Mülltonne';
      6. foreach($wohnorte AS $key => $value){
      7. echo $key.' wohnt in '.$value.'\n <br />';
      8. }


      Die Ausgabe wäre nun dementsprechend:

      Peter wohnt in München
      Anna wohnt in Hawai
      Paul wohnt in Mogadischu
      Jan wohnt in Hambrug
      Felix wohnt in der Mülltonne


      Wie ihr seht haben wir der Schleife in keinem Wort gesagt wo sie anfangen soll. Sie hat vollautomatisch einfach alle Elemente des Arrays durchlaufen und wir haben auch den Index des jeweiligen Wertes herausbekommen.

      Diese Schleife werdet ihr in der Praxis eigentlich ziemlich oft antreffen um ein bestimmtes Array zu beinflussen.

      Wie immer: Falls ich hier was vergessen habe, oder ihr Fehler entdeckt, bitte melden.

      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.


      ~Lunatic
    • Werbung zur Unterstützung des Forums ( Bitte AddBlocker deaktivieren )

    • GUter Junge *keks geb*
      Hat also das Thread ausgraben was genützt.
      Immerhin gut, dass du weitergemacht hast, die Foreachschleife war mir zwar bekannt auch deren Funktionsweise, also Syntax aber nich genau was ich jetzt damit richtig anfangen kann.
      ICh wusste nur soweit "..aha, durchläuft jedes Element des Arrays.." "..Und was macht man jetzt damit?.."
      Aber jetzt hab ich die genaue Funktionsweise verstanden.
      Mach weiter so, deine Tuts sind irgendwie ziemlich einfach zu lesen.
      Falls du irgendwie vorhast, jedes Tut als einzelner Thread zu posten, so kannste mich ja mal ansprechen, dann finden wir ne Lösung, denn ich kann nich unendlich Guides sticken, der Bereich würde ja platzen xD.
      Im mom is wenig los, da "lohnen" sich Stickys wenig, aber einen verteilen kann ich schonmal.
      Jedenfalls, sofern noch viele weitere Guides kommen, kannste ja nen Sammelthread erstellen zu deinen Tuts, bzw auch zu anderen damit man alles auf einmal hat.