Arrays

Ein Array ist ebenfalls eine Variable, die allerdings anstatt nur einem Wert, viele Werte speichern kann. Stell dir vor du hast 5 Namen, die du in Variablen speichern möchtest. Mit deinem bisherigen Wissen müsstest du das folgendermaßen machen:

<?php
	$name1 = "David";
	$name2 = "Norman";
	$name3 = "Gerhard";
	$name4 = "Henning";
	$name5 = "Peter";
?>

Das ist doof, umständlich und problematisch. Einfacher geht es mit einem Array:

<?php
	$namen[] = "David";
	$namen[] = "Norman";
	$namen[] = "Gerhard";
	$namen[] = "Henning";
	$namen[] = "Peter";
?>

Uh? Was ist denn hier jetzt passiert?
Als erstes siehst du die Variable „$namen“, das ist unser Array. Doch die Variable hat noch so eine eckige-Klammer „[]“ hinter dem Namen. Damit sagen wir dem Array „jetzt kommt ein Wert den wir speichern wollen, leg also im Array einen neuen Eintrag an“. Nicht verstanden? Dann jetzt mal Schritt für Schritt.

Arrays Schritt für Schritt erklärt

Wir können ein Array in PHP mit folgender Anweisung anlegen:

<?php
	$namen = array();
?>

Wir müssen das nicht so explizit machen (im ersten Beispiel habe ich auch drauf verzichtet), aber es schadet auch nicht. Das Array hat noch keinen Wert, deshalb fügen wir ihm jetzt einen hinzu:

<?php
	$namen = array();
	$namen[] = "David";
	
	echo $namen;
?>

Wenn du das Skript ausführst, wirst du als Ausgabe „Array“ erhalten. Das ist auch korrekt, denn Arrays arbeiten ein bisschen anders als Variablen. Um alle Werte in einem Array zu erhalten, gibt es die Funktion „print_r()“:

<?php
	$namen = array();
	$namen[] = "David";
	
	print_r($namen);
?>

Ausgabe:

Ok, also der Name wurde gespeichert und befindet sich an Position „0“ im Array. Moment…. Position 0???
Ja also.. öhm… das ist zwar etwas seltsam, aber in Arrays startet der erste Wert nicht an Position 1, sondern an Position 0. Das wird in den kommenden Wochen für dich auch immer wieder eine Fehlerquelle sein, aber so ist es nunmal, Arrays starten bei 0, Arrays starten bei Position 0, Position 0 == 1. Wert

Du wirst dazu gleich noch weitere Beispiele sehen. Als erstes wollen wir unser Namens-Array mit weiteren Namen füttern:

<?php
	$namen = array();
	$namen[] = "David";
	$namen[] = "Norman";
	$namen[] = "Gerhard";
	$namen[] = "Henning";
	$namen[] = "Peter";
	
	print_r($namen);
?>

Dies ist nur eine Variante ein Array mit Werten zu erstellen, eine andere Variante ist folgende:

Nun sieht die Ausgabe schon interessanter aus:

Wenn du noch eine kleine Formatierung machst, wird das Array auch übersichtlicher angezeigt:

<?php
	$namen = array("David", "Norman", "Gerhard", "Henning", "Peter");
	
	echo '<pre>';
	print_r($namen);
	echo '</pre>';
?>

Wie du siehst, werden im Array die Plätze 0, 1, 2, 3 und 4 belegt für 5 Namen.
Du weißt nun, dass man mit „print_r()“ ein Array komplett ausgibt und mit den HTML-Tags „pre“, die Ausgabe schön formatieren kann. Aber normalerweise möchte man ja nicht das komplette Array ausgeben (fürs debugging/fehler finden sehr nützlich), sondern einzelne Werte bearbeiten und anzeigen.

Array Werte hinzufügen, ausgeben und löschen

Wie man Werte einem Array hinzufügt, hast du schon gesehen. Einfach der Name des Arrays + []-Klammern = Wert:

<?php
	$namen = array("David", "Norman", "Gerhard", "Henning", "Peter");
?>

Der Versuch „echo $namen;“ führte zu nichts, denn das gesamte Array können wir nicht ausgeben. Wir müssen auf die einzelnen Container im Array zugreifen. Möchtest du z.b. den Namen „Gerhard“ ausgeben, führt dich folgender Code zum Ziel:

<?php
	$namen = array("David", "Norman", "Gerhard", "Henning", "Peter");
	
	echo $namen[2];
?>

Um einen bestimmten Array-Wert auszugeben, musst du einfach nur die Container-Nummer angeben. Achte darauf, dass wir hier Container-Nummer 2 angegeben haben, denn an Position 0 ist „David“ an Position 1 ist „Norman“ und erst an Position 2 ist „Gerhard“. Vergiss niemals die Position 0 in einem Array zu berücksichtigen!

Gut, jetzt können wir Array-Werte hinzufügen und ausgeben, doch was ist wenn wir einen Array Wert löschen wollen?
Wir haben ein kleines Spiel in PHP programmiert und oben ist unser Array mit allen 5 Spielern. Nun hat der Spieler „Henning“ verloren und wir wollen ihn aus unserem Array löschen. Dazu hilft uns die Funktion „unset()“.

<?php
	$namen = array("David", "Norman", "Gerhard", "Henning", "Peter");
	
	echo "Anzahl Spieler: ".count($namen)."<br />";
	unset($namen[3]);
	echo "Anzahl Spieler: ".count($namen)."<br />";

        echo '<pre>';
	print_r($namen);
	echo '</pre>';
?>

In Zeile 4 geben wir erstmal aus, wieviele Spieler wir derzeit haben. Die Funktion „count()“ gibt die Anzahl aller Elemente eines Arrays aus. In Zeile 5 löschen wir mit „unset()“ den 3. Container, also den Spieler „Henning“ (0. Container beachten!). In Zeile 6 prüfen wir nun nochmal, wieviele Spieler vorhanden sind und stellen fest, dass nun nur noch 4 Spieler dabei sind.

Zum Schluss geben wir nochmal das Array formatiert aus und stellen fest, dass zwar der Spieler gelöscht wurde, aber die Array-Indizes (also die Container-Zahlen) lückenhaft sind (die 3 fehlt). Im Kapitel Schleifen wirst du sehen, dass das nicht so toll ist und fortlaufende Indizes weniger Probleme machen. Daher müssen wir, nachdem der Spieler „Henning“ gelöscht wurde, noch schnell das Array neu auflisten mit der PHP Funktion „array_values($namen);“:

<?php
	$namen = array("David", "Norman", "Gerhard", "Henning", "Peter");
	
	echo "Anzahl Spieler: ".count($namen)."<br />";
	unset($namen[3]);
	echo "Anzahl Spieler: ".count($namen)."<br />";
	
	echo '<pre>';
	print_r($namen);
	echo '</pre>';
	
	$namen = array_values($namen);
	
	echo '<pre>';
	print_r($namen);
	echo '</pre>';
?>

Ausgabe:

Array – Fazit

Damit haben wir gerade mal an der Oberfläche von Arrays gekratzt. Arrays werden ständig benötigt und machen die Programmierung mit PHP erst so richtig dynamisch. Wenn dir etwas unklar ist oder du noch Fragen hast, zögere nicht und stell sie (Feedback-Button auf rechter Seite).

hier geht's weiter...



Kommentare

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