Foreach-Schleifen

Die Foreach-Schleife ist eine Schleife zum durchlaufen von Arrays:

<?php
	$tage = array("Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag", "Sonntag");
	
	foreach($tage as $tag)
	{
		echo $tag."<br />";
	}
?>

Das Beispiel zeigt den typischen Einsatz einer Foreach-Schleife: ein Array mit allen Wochentagen soll durchlaufen werden. Der Schleifenkopf nimmt das Array „$tage“ und holt sich das 1. Element und weist es der Variablen „$tag“ zu. Das tolle daran ist, dass wir innerhalb der Schleife mit den Werten des Arrays arbeiten können. In diesem Fall ist es eine einfache Variable, doch wenn es ein multidimensionales Array wäre, könnten wir auf alle Felder zugreifen ($tag[0][0], $tag[0][1], etc.). Und auch für assoziative Arrays ist die foreach-Schleife wie gemacht:

<?php
	//Jeder Spieler hat eine bestimmte Punktzahl
	
	$spieler["Maurice"] = 4233;
	$spieler["Anna"] = 3872;
	$spieler["Sarah"] = 1497;
	
	foreach($spieler as $index => $value)
	{
		echo $index." hat ".$value." erreicht <br />";
	}
?>

Die Variable „index“ greift dabei immer auf den Index-Namen des assoziativen Arrays zu, in diesem Fall also „Maurice“, „Anna“ und „Sarah“. Die Variable „value“ beinhaltet den Wert der Array-Variable, also „4233“, „3872“ und „1497“. Man muss nicht „index“ und „value“ verwenden, man kann auch aussagekräftigere Variablennamen verwenden:

<?php
	//Jeder Spieler hat eine bestimmte Punktzahl
	
	$spieler["Maurice"] = 4233;
	$spieler["Anna"] = 3872;
	$spieler["Sarah"] = 1497;
	
	foreach($spieler as $name => $punkte)
	{
		echo $name." hat ".$punkte." erreicht <br />";
	}
?>

Die foreach-Schleife funktioniert unabhängig von den Indizes. Also damit eine for-Schleife ein Array durchlaufen kann, müssen die Indizes lückenlos sortiert sein ($tage[0],
$tage[1], $tage[2], usw.), einer foreach-Schleife ist das egal, die durchläuft einfach alle Array-Elemente:

<?php
	$werte[rand(999, 9999)] = "Wert 1";
	$werte[rand(999, 9999)] = "Wert 2";
	$werte[rand(999, 9999)] = "Wert 3";
	
	foreach($werte as $index => $wert)
	{
		echo $wert." - Index: ".$index."<br />";
	}
?>

Wir erzeugen 3 Container im Array „$werte“ und die Indizes sind jeweils zufällig zwischen 999 und 9999. Dennoch durchläuft das Array problemlos alle 3 Container und gibt uns den Wert der jeweiligen Index-Zahl aus.

hier geht's weiter...



Kommentare


Hallo Christian,
also bislang komme ich sehr gut durch das Tut. und ich danke dir dafür.
Aber ich hänge mich grad bei der foreach schleife auf…Ich verstehe, dass der Schleifenkopf den Wert der ersten Var. zum bsp.: $spieler nimmt und der folgenden Var. zuweist –> $name. Was dann folgt ist mir aber nicht klar => $punkte?

Sehe scheinbar den Wald vor lauter Bäumen nicht.


Bei einem assoziativen Array greift man mittels "index" + "value" auf den index-namen und den Wert des Arrays zu. Ich habe das Beispiel oben vereinfacht. Sag mir bescheid wenn etwas bestimmtes noch nicht klar sein sollte :)


Hallo Christian,

das habe ich verstanden, mir ist nur nicht klar was nach => passiert bzw. was => überhaupt bewirkt:(


Ah verstehe. Ein normales Array hat z.b. die folgenden Index-Werte: 0,1,2,3,4 etc.
Ein assoziatives Array hat "Namen" als Index-Wert, also keine Zahlen.
In der Regel brauchst du bei einer foreach-Schleife nicht zu wissen wie der Index-Name der Variablen ist. Dann kannst du einfach den normalen Schleifen-Kopf benutzen:

foreach($werte as $wert) {
echo $wert;
}

Doch manchmal brauchst du auch den Index-Wert der Variablen, dann benutzt du "=>".

Frag nach sollte es noch nicht klar sein :)

Kommentar schreiben

Kommentar

Hilfe:

<strong>fettgedruckt</strong> => fettgedruckt

<em>kursiv</em> => kursiv

<a href="http://wordpress.lernenhoch2.de">Link</a> => Link

[code]<?php echo 'hello world'; ?>[/code]

*

Feedback Formular