Arrays in PHP verwenden
In PHP Arrays zu verwenden, ist nicht schwer. Zu wissen, wie man sie sortiert und darüber iteriert, ist allerdings sehr wichtig zu wissen.
Artikel LesenEine PHP Schleife ist dazu da, Programmabläufe zu wiederholen. Auf Englisch spricht man oft von einem Loop. Ein Loop oder auf Deutsch auch "Schleife" genannt, ist eine Kontrollstruktur für Programme.
Es gibt verschiedene Schleifentypen in PHP, das sind die folgenden:
Der Vorteil einer PHP Schleife ist, dass der Programmcode in der PHP Schleife mehrmals ausgeführt werden kann. Ohne sie müsste man den Code mehrmals kopieren oder mit Goto-Anweisungen arbeiten, um vom Ende wieder an den Anfang zu springen. Schleifen sind somit eine sehr elegante Möglichkeit zum Arbeiten und sind aus heutigen Programmiersprachen nicht mehr wegzudenken.
Die Schleife kann theoretisch endlos ausgeführt werden. Das wird zum Beispiel in vielen anderen Sprachen für grafische Interfaces gemacht.
Hauptaugenmerk liegt natürlich darauf, Programmcode zu wiederholen. Das eignet sich zum Beispiel für das Prüfen von Arrays auf bestimmte Werte. Oder um Elemente ins Array zu erweitern; je nach Inhalt des Elements. Du kannst Programmanweisungen so oft ausführen lassen, bis eine Bedingung zutrifft.
Eine for-Schleife ist in mehrere Elemente aufgeteilt. Zu aller Erst unterscheiden wir zwischen Schleifenkopf und Schleifenkörper. Im Schleifenkopf werden die Parameter für die Schleifen gesetzt wie oft diese durchlaufen soll, welche Variable der Zähler ist.
Im Einzelenden haben wir folgende Parameter im Schleifenkopf:
Als Erstes haben wir Variablendefinierung. Das ist unsere Zählervariable. Dort wird diese auf 0 gesetzt oder einen anderen Wert an diesem wird das Zählen der Schleife gestartet. Als Zweites haben wir eine Anweisung bis zu welchem Wert gezählt werden soll, solange diese Anweisung true ist, wird der Schleifenkörper ausgeführt. Zuletzt haben wir einen Parameter Zähler. Dieser erhöht sich in der Infografik um eins, allerdings können das auch deutlich komplexere Zähler werden bei Bedarf.
Der Schleifenkörper wird nur ausgeführt, wenn die Anweisung im Schleifenkopf true ist. Im Schleifenkörper können ganze Programme und Funktionen stehen, dort muss nicht nur 1 Zeile stehen. So kann man komplexe Programme erstellen.
Hier nun einmal das Ganze als Infografik um es noch einmal einfacher nachvollziehen zu können.
Die Ausgabe der for Schleife würde wie folgt aussehen.
0<br>1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9<br>10<br>
In dem folgenden Diagramm könnt ihr sehen wie die Kontrollstruktur als Prozess abläuft, als Erstes wird die Anweisung geprüft, wenn die Anweisung true ist, wird der Schleifenkörper ausgeführt, danach wird die Schleifenvariable erhöht. Und die Anweisung wird erneut geprüft. Und der Ablauf beginnt wieder von vorne.
Die For-Schleife ist vor allem dann sinnvoll, wenn du bereits weißt, wie oft die Schleife durchlaufen soll.
Die foreach Schleife ist für Arrays eine der besten Schleifen. Denn die foreach-Schleife iteriert über ein jedes Element des Arrays hinüber. Die Foreach Schleife hat noch eine Besonderheit: im Vergleich zur for Schleife benötigt sie keinen Zähler. Es wird die Anzahl der Elemente im Array geloopt. Bei 10 Elementen im Array, läuft der Array 10 mal durch.
Falls du noch nicht weißt, was Arrays sind, solltest du dir spätestens jetzt einmal den folgenden Artikel anschauen, da dieses Wissen für den Inhalt von diesem Beitrag sehr nützlich ist.
In PHP Arrays zu verwenden, ist nicht schwer. Zu wissen, wie man sie sortiert und darüber iteriert, ist allerdings sehr wichtig zu wissen.
Artikel LesenIn der folgenden Grafik seht ihr den Aufbau einer foreach Schleife, als Erstes braucht es einen Array oder eine Variable die ein Array enthält. Danach folgt das Keyword as
danach kann $key ⇒
folgen dieser Teil kann aber auch weggelassen werden. Die $key
Variable darf auch jeden anderen Namen tragen. Sie enthält den aktuellen Key zum Array Value. Danach folgt der Name wie das Array Element "Value" im Schleifenkörper heißen soll.
Die Variable $value
nimmt immer den aktuellen Wert des aktuellen Durchlaufs an. Heißt, wir können nicht die Variable $value
für den nächsten Durchlauf manipulieren.
Ein Beispiel einer foreach Schleife kann sein eine Ausgabe der deutschen Automarken nacheinander. Das "\n" steht für new line. Diese ist nützlich, wenn du es im Quellcode sauber untereinander dargestellt haben willst.
$automarken = ["Audi","BMW","Mercedes-Benz","Opel","Porsche","VW"];
foreach($automarken as $key => $automarke){
echo $key. " " . $automarke . "\n";
}
Der Key ist in dem Fall von 0 bis 5 in der Darstellung.
Da wir einen Key haben für jedes Element, können wir den ursprünglichen Array auch durch eine foreach Schleife verändern, in unserem Beispiel wollen wir allen Elementen direkt eine New Line Char dran hängen, um bei der nächsten Ausgabe diesen nicht mehr extra schreiben zu müssen.
Der Code dafür sieht wie folgt aus:
$automarken = ["Audi","BMW","Mercedes-Benz","Opel","Porsche","VW"];
foreach($automarken as $key => $automarke){
$automarken[$key] = $automarke . "\n";
}
foreach($automarken as $automarke){
echo $automarke;
}
In der ersten foreach Schleife Manipulieren wir das Array an den Stellen vom Key. Und ergänzen den New Line Char.
Der Unterschied von for-Schleifen und while-Schleifen liegt darin, dass while-Schleifen sich für deutlich komplexere Anweisungen besser eignen, und dass Schleifen nicht nur über Zähler, sondern auch über bestimmte Zustände laufen können.
In unserem Beispiel stellen wir uns einen visuellen Würfel mit 4 Farben vor Rot, Blau, Grün, Gelb.
Dafür erstellen wir eine Funktion "Würfel". Diese gibt uns eine der 4 verschiedenen Farben zufällig aus.
function Wuerfel(){
return ["Rot","Blau","Grün","Gelb"][rand(0,3)];
}
Jetzt wollen wir, dass unser Programm aufhört zu Würfeln, wenn die Farbe Rot ist. Dann soll die Zahl ausgegeben werden wie oft gewürfelt werden musste. Diese würde in einer for Schleife nicht gehen, weil wir vorher nicht wissen wie oft gewürfelt werden muss, da das Ergebnis komplett zufällig ist.
$wurf = "";
$count = 0;
while($wurf != "Rot"){
$count++;
$wurf = Wuerfel();
}
echo "Es wurde " . $count . " mal Gewürfelt!";
Die Zahl $count
gibt an wie oft Gewürfelt wurde, in meinem Beispiel Wurf waren es zum Beispiel 8 mal bis Rot gekommen ist. Dieses Verhalten ließe sich mit einer for Schleife nicht umsetzen, da diese einen Anfang und ein Ende braucht.
Es wurde 2 mal Gewürfelt!
Es wurde 6 mal Gewürfelt!
Es wurde 8 mal Gewürfelt!
Es wurde 2 mal Gewürfelt!
Verschiedene Versuche ergeben verschiedene Ergebnisse. So ist dieses Verhalten nicht mit einer for Schleife abzudecken.
Die Endlosschleife ist eine gefährliche Schleife und zieht in PHP einen Timeout nach sich. Der Browser wird sich aufhängen in der Regel. Das geschieht, wenn die Bedingung im Schleifenkopf niemals zutrifft, das kann nicht nur bei While-Schleifen der Fall sein, das geht mit allen Schleifen. Außer mit der foreach da diese ja durch die Größe des Arrays definiert ist.
Dieser Fall würde bei unserer oberen While-Schleife zum Beispiel eintreten, wenn wir kein Rot hätten was Gewürfelt werden kann, dann würde die Bedingung $wurf
≠ Rot niemals nicht zutreffen.
Unser oberes Beispiel bei der while-Schleife eignet sich außerdem ausgezeichnet für eine andere Schleife, und zwar die do-while-Schleife.
Die do-while-Schleife ist eine fußgesteuerte Schleife und nicht wie bei den meisten Schleifen kopfgesteuert, der Vorteil hiervon ist, dass der Schleifenkörper immer einmal ausgeführt wird, in unserem Beispiel von oben macht es Sinn, diese Schleife der while-Schleife vorzuziehen aus dem Grund, das wir uns die Zuweisung eines leeren String ersparen können.
function Wuerfel(){
return ["Rot","Blau","Grün","Gelb"][rand(0,3)];
}
$count = 0;
do {
$wurf = Wuerfel();
$count++;
} while ($wurf != "Rot");
echo "Es wurde " . $count . " mal Gewürfelt!";
So wird immer zuerst einmal der Schleifenkörper ausgeführt und dann wird die Anweisung überprüft.
Das Diagramm für eine fußgesteuerte Schleife sieht wie folgt aus, dort kann man gut erkennen, dass der Schleifenkörper immer ausgeführt wird.
Du kannst alle Schleifen beeinflussen mit zwei Keywords continue und break.
Mit continue können wir den restlichen Schleifenkörper überspringen und es wird mit dem nächsten Zähler fortgefahren.
Für unser Beispiel kann ein Continue Statement zum Beispiel wie folgt aussehen.
$automarken = ["Audi","BMW","Mercedes-Benz","Opel","Porsche","VW"];
foreach($automarken as $key => $automarke){
if($automarke == "Opel"){
continue;
}
echo $key. " " . $automarke . "\n";
}
In diesem Beispiel würden jetzt Audi, BMW, Mercedes-Benz, Porsche und VW ausgegeben werden, der Opel würde übersprungen werden.
Mit break können wir eine Schleife komplett beenden, das ist nützlich, wenn wir zum Beispiel in einer foreach Schleife etwas suchen können, so können wir auch in einer foreach Schleife eine Abbruchbedingung integrieren.
Für unser Beispiel der Automarken kann das zum Beispiel wie folgt aussehen:
$automarken = ["Audi","BMW","Mercedes-Benz","Opel","Porsche","VW"];
foreach($automarken as $key => $automarke){
if($automarke == "Opel"){
break;
}
echo $key. " " . $automarke . "\n";
}
In diesem Beispiel würden nur Audi, BMW und Mercedes-Benz ausgegeben werden.
Diese Keywords kannst du nicht nur bei der foreach Schleife verwenden, du kannst sie bei jeder Schleife verwenden, deiner Kreativität sind keine Grenzen gesetzt.
Als letzten Abschnitt will ich euch noch etwas vorstellen, und zwar gibt es die Möglichkeit, eine alternative Syntax zu verwenden für die verschiedenen Schleifen von der while bis zur for-Schleife in PHP.
Diese Syntax verzichtet auf {}
und setzt stattdessen auf den Punkt, das sieht für die verschiedenen Schleifen wie folgt aus. Die Beispiele sind selbsterklärend, nachdem du nun diese Anleitung gelesen hast:
for ($i=0; $i <= 10; $i++):
echo $i . "<br>";
endfor;
Die for Schleife beginnt mit einem : und endet mit endfor;
foreach($automarken as $key => $automarke):
echo $key. " " . $automarke . "\n";
endforeach;
Die foreach Schleife beginnt mit einem : und endet mit endforeach;
while($wurf != "Rot"):
$count++;
$wurf = Wuerfel();
endwhile;
Die while Schleife beginnt mit einem : und endet mit endwhile;
Ich persönlich bevorzuge immer öfters diese alternative Syntax, da ich auch viel mit Python arbeite und da eben alles ohne Klammern eh viel schöner aussieht. Einen direkten Vorteil hat diese alternative Syntax nicht.
PHP Schleifen ermöglichen euch, Programmabschnitte unbestimmt oder bestimmt oft zu wiederholen ohne Goto-Anweisungen verwenden zu müssen. Schleifen sind aus Programmiersprachen nicht mehr wegzudenken. Also viel Spaß beim Verwenden!
Hinterlasse mir gerne einen Kommentar zum Artikel und wie er dir weitergeholfen hat beziehungsweise, was dir helfen würde das Thema besser zu verstehen. Oder hast du einen Fehler entdeckt, den ich korrigieren sollte? Schreibe mir auch dazu gerne ein Feedback!
Es sind noch keine Kommentare vorhanden? Sei der/die Erste und verfasse einen Kommentar zum Artikel "PHP Schleifen Verwenden, so geht es!"!