PHP Schnellstart – Arrays
In dieser Lektion lernst du, was Arrays sind und wie du sie in deinen Programmen einsetzen kannst. Starten wir mit der einfachsten Frage:
Was ist ein Array?
Bislang hast Du nur Variablen verwendet. Variablen sind einzelne Speicherzellen. Ein Array ist hingegen eine Erweiterung des Konzepts der Variablen auf eine Datenstruktur, die aus mehreren Speicherzellen besteht.
Üblich sind dafür als Benennung im Programmier-Alltag auch auch die Begriffe Liste, Vektor und Feld. Diese bedeuten alle das Gleiche.
Bei einem Array werden mehrere Werte unter einem gemeinsamen Namen angesprochen. Der Compiler der Programmiersprache sorgt dafür, dass gleich ein ganzer Block im Hauptspeicher für das Array reserviert wird. Damit liegen alle Elemente des Arrays nebeneinander im Speicher und somit sind auch die Zugriffszeiten auf diese Elemente minimal.
Auf diese einzelnen Werte greifst Du mit einer Referenz zu, auch genannt eindeutiger Schlüssel oder Index. In PHP ist diese Referenz eine Zahl oder eine Zeichenkette.
Hinweis: In einem Array darfst Du diese Referenzen auch mischen -- sie müssen nur innerhalb der Liste der Schlüssel des Arrays eindeutig sein, sprich: jeder Schlüssel darf nur ein einziges Mal vorkommen. Die Reihenfolge der Schlüssel ist in einem Array nicht garantiert, d.h. bei unsortierten Arrays folgt auf den Schlüssel "3" nicht zwingend der Schlüssel "4".
PHP kennt zwei Fälle für Arrays:
- Fall 1: alle Elemente sind gleich groß, bspw. ganzzahlige Werte (Integer). Damit benutzen alle Elemente den gleichen Datentyp.
- Fall 2: die Elemente sind unterschiedlich, d.h. benutzen einen unterschiedlichen Datentyp wie ganzzahlige Werte (Integer) und Zeichenketten.
Beide Varianten von Arrays kommen häufig in der Praxis vor.
Warum braucht man Arrays überhaupt?
Arrays sind sehr nützlich für die Strukturierung der Daten im Speicher (Datenstrukturen). Würden Arrays nicht existieren, müsstest Du für jeden Wert eine separate Variable anlegen. Eine Liste mit Namen von Hansestädten müsstest Du bspw. wie folgt anlegen:
$hansestadt0 = "Bremen";
$hansestadt1 = "Hamburg";
$hansestadt2 = "Rostock";
Muss die Liste später verändert werden, ist das unpraktisch, weil der Überblick darüber verloren geht. Mit einem Array ist das wesentlich einfacher. Wie das geht, lernst Du weiter unten.
Arrays anlegen
Hier lernst Du, wie Du Arrays anlegst und wie Du auf die einzelnen Elemente zugreifst.
Erzeugen eines leeren Arrays
Ein leeres Array legst Du ähnlich wie eine Variable an -- Du brauchst zunächst nur einen aussagekräftigen Namen dafür. Als "Wert" weist Du der Liste den Zugriffsoperator [] zu.
Code-Beispiel - Array anlegen
<?php
$hansestadt = [];
?>
Alternativ wird auch die Schreibweise mit Hilfe des Schlüsselwortes array() benutzt -- sie ist vollkommen gleichwertig zur obigen Variante.
Hier ein Beispiel der anderen Schreibweise:
<?php
$hansestadt = array();
?>
In dieser Lektion benutzen wir die einfache Variante. In beiden Fällen kann nun das Array $hansestadt Werte aufnehmen.
Anlegen ohne Angabe von Schlüsseln
Möchtest Du keine Schlüssel explizit vergeben, legst Du das Array wie folgt an:
<?php
$hansestadt = ["Lübeck", "Hamburg", "Rostock"];
?>
Zur leichteren Lesbarkeit ist diese Schreibweise besser:
<?php
$hansestadt = [
"Lübeck",
"Hamburg",
"Rostock"
];
?>
PHP vergibt für das erste Element ("Lübeck") den Index (Schlüssel) 0, für das zweite Element ("Hamburg") die 1 und für das dritte Element ("Rostock") die 2.
Merke: Das erste Element fängt immer mit 0 (Null) an und nicht mit 1! Das ist für viele Anfänger zunächst verwirrend. Nach kurzer Zeit gewöhnst du dich jedoch daran!
Anlegen mit Angabe von Schlüsseln
Als nächstes lernst Du, wie Du ein Array anlegst, wobei Du die Schlüssel selbst bestimmst. Es ist die gleiche Datenstruktur wie oben auch, nur sind jetzt die Schlüssel von 0 bis 2 explizit sichtbar:
<?php
$hansestadt = [
0 => "Lübeck",
1 => "Hamburg",
2 => "Rostock"
];
?>
Wie bereits eingangs genannt, kannst Du die Schlüssel des Arrays frei vergeben, lediglich eindeutig müssen diese sein. Nachfolgend siehst Du das Array mit den Kennzeichen von Kraftfahrzeugen als Schlüssel:
<?php
$hansestadt = [
"HL" => "Lübeck",
"HH" => "Hamburg",
"HRO" => "Rostock"
];
?>
Bitte beachte, dass Du Zeichenketten als Schlüssel stets in "Hochkommas" einschließen musst, damit PHP diesen Schlüssel akzeptiert.
Lesen und Schreiben von Elementen
Der Zugriff auf ein Element eines Arrays erfolgt mit Hilfe des Zugriffsoperators [] und dem entsprechenden Schlüssel. Das Lesen des Elements mit dem Schlüssel 2 gelingt Dir somit wie folgt:
<?php
$hansestadt = ["Lübeck", "Hamburg", "Rostock"];
$stadt = $hansestadt[2];
?>
Die Variable $stadt enthält ab jetzt den Wert "Rostock".
Das Schreiben bzw. Zuweisen eines Wertes gelingt ebenso leicht. Um dem zweiten Element (Index 1) aus dem Array $hansestadt den Wert "Bremen" zuzuweisen, benutzt Du die folgende Anweisung:
<?php
$hansestadt = ["Lübeck", "Hamburg", "Rostock"];
$hansestadt[1] = "Bremen";
?>
Das Array $hansestadt enthält nunmehr die drei Elemente "Lübeck", "Bremen" und "Rostock".
Bitte beachte, dass PHP das Array im Bedarfsfall automatisch verlängert. Existiert in dem Array noch kein Eintrag mit dem angegebenen Schlüssel, wird dieses am Ende hinzugefügt. Existiert jedoch bereits ein entsprechender Eintrag, wird der entsprechende Eintrag aktualisiert.
Möchtest Du ein Element am Ende des Arrays $hansestadt hinzufügen, ohne jedoch den höchsten Index zu kennen, schreibst Du einfach $hansestadt[]. Der neue Eintrag bekommt den nächsthöheren Schlüssel, in unserem Fall 4 für "Stralsund".
<?php
$hansestadt = ["Lübeck", "Bremen", "Rostock"];
$hansestadt[] = "Stralsund";
?>
Elemente löschen
Das Entfernen oder Löschen eines Elements aus einem Array gelingt Dir mit Hilfe der integrierten PHP-Funktion unset(). Die Funktion erwartet als Parameter den Schlüssel, bspw. 1 für das zweite Element ("Bremen").
<?php
$hansestadt = ["Lübeck", "Bremen", "Rostock", "Stralsund"];
unset($hansestadt[1]);
?>
Jetzt besteht das Array nur noch aus den drei Elementen "Lübeck" (Index 0), "Rostock" (Index 2) und "Stralsund" (Index 3). PHP nummeriert die verbleibenden Schlüssel im Array nicht neu, wenn Du Elemente daraus löschst oder neue hinzufügst.
Ein ganzes Array löschen
Dieser Schritt gelingt ebenfalls über die Funktion unset(). Als Parameter gibst Du hier einfach den Namen des Arrays an:
<?php
unset($hansestadt);
?>
Somit wird das Array samt seiner Elemente vollständig aus dem Hauptspeicher entfernt. Geht es Dir hingegen nur darum, das Array zu leeren, genügt auch die Zuweisung eines leeren Arrays ([]) als Wert.
Alle Array-Elemente ausgeben
In der Praxis ist es häufig so, dass Du das gesamte Array durchlaufen und auf alle Elemente eines Arrays zugreifen musst. Das nachfolgende Beispiel zeigt, wie Dir das mit Hilfe einer foreach-Schleife gelingt.
Hinweis: Mit Schleifen beschäftigen wir uns im nächsten Modul. Falls du noch nicht verstehst, was der folgende Code macht, kannst du das Beispiel zunächst überspringen. Ich habe es nur der Vollständigkeit halber aufgeführt.
$hansestadt = ["Lübeck", "Bremen", "Rostock", "Stralsund"];
foreach ($hansestadt as $id => $stadt) {
echo ("Die Stadt mit dem Schlüssel $id ist $stadt.
");
}
Die Variable $id enthält den Index des Elements und $stadt den jeweiligen Wert des Elements des Arrays. Die foreach-Schleife durchläuft das gesamte Array und liefert Dir diese Ausgabe:
Die Stadt mit dem Schlüssel 0 ist Lübeck.
Die Stadt mit dem Schlüssel 1 ist Bremen.
Die Stadt mit dem Schlüssel 2 ist Rostock.
Die Stadt mit dem Schlüssel 3 ist Stralsund.
Deine Aufgabe - Jetzt bist du gefragt:
Im untenstehenden Editor findest Du eine Übung zu Arrays.
Aufgabe 1:
Deine erste Aufgabe ist es ein Array mit den folgenden drei Werten (Karibik-Traumziele) anzulegen.
- Kuba
- Bahamas
- Jamaika
Benutze nun den echo-Befehl, um den letzten Array-Wert auszugeben. Beachte dabei, dass der Index bei 0 anfängt und nicht bei 1!
Aufgabe 2:
Du warst dir bei deinen Traumzielen in der Karibik noch nicht sicher. Du möchtest jetzt die "Bahamas" gegen "Barbados" austauschen. Ändere den Wert in deinem Array entsprechend ab. Prüfe dann mit dem echo-Befehl ($traumziele[1]), ob der Wert korrekt ausgetauscht wurde 🙂
Code-Editor:
Wenn die Aufgaben noch zu schwer waren, findest du hier die Komplettlösung:
[lp_spoiler title="Lösung anzeigen" class="da"]
Lösung beider Aufgaben:
<?php
# Aufgabe 1
$traumziele = ["Kuba", "Bahamas", "Jamaika"];
echo $traumziele[2];
# Aufgabe2
$traumziele[1] = "Barbados";
echo "<br>";
echo $traumziele[1];
?>
[/lp_spoiler]
Zusammenfassung zu Arrays
Das waren die wichtigsten Grundlagen zu Arrays (Listen). Arrays sind sehr praktisch. Wenn Du den Umgang damit verstanden hast, wird die Verwendung komplexerer Datenstrukturen in deinen Skripten wesentlich einfacher. Hier hast du gelernt, wie du Arrays anlegst, veränderst und Einträge im Array überschreiben sowie löschen kannst.
In der nächsten Lektion zeige ich dir praktische Anwendungen mit Arrays in PHP.