Arrays
Arrays können in PHP viele Daten von unterschiedlichen Datentypen aufnehmen.
In PHP werden wir immer wieder mit Arrays zu tun bekommen.
Die superglobalen Variablen "$_GET
" und "$_POST
" selber sind Arrays und auch die Datenbanken geben Ihre Datensätze als Array aus.
Grundlagen
Ein Array speichert beliebig viele Daten in einer Reihenfolge. Die Daten werden über den Index identifiziert. Der Index von Arrays beginnt immer bei 0. Der erste Datensatz ist der Index 0, der zweite Datensatz ist der Index 1, der dritte Datensatz ist der Index 2 und immer so weiter.
Arrays erstellen
Ein Array wird über den Befehl "array
" erstellt.
Ein Array kann auch als leeres Array erstellt werden.
$a array();
Die Variable "$a" besteht jetzt aus einem Array ohne Inhalt.
$monate = array("Januar", "Februar", "März", "April");
print_r($monate);
In der Variable "$monate
" befinden sich 4 Strings.
Ein Array kann aber auch unterschiedliche Datentypen aufnehmen.
Das Mischen dieser Datentypen stellt kein Problem für Arrays dar.
Wenn Zahlen als String behandelt werden sollen, müssen diese jedoch in Anführungszeichen angegeben werden.
Zahlen ohne Anführungszeichen werden als Integer behandelt.
$monate = array("Januar", "Februar", 3, 4, "Mai", "Juni");
print_r($monate);
Um einfach mit Arrays arbeiten zu können, werden die eckigen Klammern verwendet. Der Zugriff auf die Array-Elemente erfolgt immer über das gleiche Prinzip.
$name[Index]
Um die Integerwerte der Monatszahlen "3" und "4" gegen die Strings "März" und "April" zu tauschen, bestimmen wir einfach einen neuen Wert an dem Index des Array.
$monate = array("Januar", "Februar", 3, 4, "Mai", "Juni");
$monate[2] = "März";
$monate[3] = "April";
print_r($monate);
Der Index 2 steht für das dritte Element und der Index 3 steht für das vierte Element.
Das Hinzufügen von Elementen kann auf die gleiche Weise ausgeführt werden.
$monate[6] = "Juli";
Wenn der Index nicht mit angegeben wird, dann wird einfach das Element hinten an den bestehenden Elementen angehangen und der darauffolgende Index vergeben.
$monate[] = "August";
Um ein Element aus dem Array zu entfernen, wird die Funktion "unset
" verwendet.
unset($monate[0]);
Wenn kein Index angegeben wird, der entfernt werden soll, dann wird das gesamte Array entfernt.
unset($monate);
Der PHP-Interpreter reagiert mit einer entsprechenden Fehlermeldung beim Versuch das Array auszugeben
Assoziative Arrays
Bei assoziative Arrays handelt es sich um Arrays, bei denen anstelle der Nummer des Index ein String steht, zum Beispiel ein Name oder ein Ort. Die Zuweisung von Index und Wert erfolgt über den => Operator.
Nicht verwechseln mit dem -> Operator aus der Objektorientierten Programmierung.
$person = array("name" => "Mike", "ort" => "Hamburg", "alter" => 40);
print_r($person);
In PHP sind alle Arrays assoziativ. Das bedeutet, dass den numerischen Indiz eine Sonderrolle zusteht. Dadurch können wir aber auch numerische und assoziative Indizes innerhalb der Arrays vermischen.
Mit eckigen Klammern können wir auch den Inhalt der assoziativen Arrays erweitern.
$person["hobby"] = "Angeln";
Kurzschreibweise mit JSON
In PHP können wir Arrays auch in der Form von "JSON" erstellen. JSON steht für: "JavaScript Object Notification".
$monate = ["Januar", "Februar", "März"];
print_r($monate);
Auch das Erstellen von assoziativen Arrays kann im JSON-Format durchgeführt werden.
$person = ["name" => "Mike", "ort" => "Hamburg", "alter" => 40];
print_r($person);
Multidimensionale Arrays
Bei multidimensionalen Arrays handelt es sich um Arrays, die in anderen Arrays verschachtelt sind. Dieser Vorgang kann beliebig tief verschachtelt werden.
$werkzeugkoffer = ["Bohrer" => ["Metallbohrer", "Holzbohrer", "Steinbohrer"], "Säge", "Schraubendreher"];
print_r($werkzeugkoffer);
In PHP können wir die einzelnen Arrays auch in Variablen speichern, wodurch wir gleichzeitig auch einen übersichtlicheren Code erzeugen können. Gerade bei komplexen Datensätzen kann das ein Vorteil sein.
$bohrer = ["Metallbohrer", "Holzbohrer", "Steinbohrer"];
$saege = ["Bügelsäge", "Kreissäge", "Kettensäge"];
$schraubendreher = ["Schlitzschraubendreher", "Kreuzschraubendreher"];
$werkzeugkoffer = ["bohrer" => $bohrer, "saege" => $saege, "schraubendreher" => $schraubendreher];
print_r($werkzeugkoffer);
Um Werkzeuge aus dem Koffer zu entnehmen, können wir die Schreibweise mit den eckigen Klammern verwenden.
print_r($werkzeugkoffer["saege"]);
Um ganz gezielt ein Werkzeug zu entnehmen, schreiben wir dahinter den Index der nächsten Ebene in eckigen Klammern.
print_r($werkzeugkoffer["saege"][2]);
Diese Verschachtelung kann beliebig komplex gestaltet werden. Als nächste Ebene könnten wir die Marke der Kettensäge oder die Antriebsart (Elektro / Benzin) in einem Array hinterlegen und immer so weiter.
Arrays und Schleifen
In der Praxis werden Arrays häufig durch Schleifen iteriert.
Dadurch, dass die Werte eines Arrays in der Reihenfolge gespeichert werden, in der Sie angegeben werden, können wir Sie sehr einfach mit einer "for
"-Schleife iterieren.
Mit der Funktion "count
" können wir feststellen, wie viele Elemente unser Array hat.
Mit dem ermittelten Wert können wir nun die Schleife durchlaufen und jedes Element über seine Indexnummer Ausgeben lassen.
$monate = ["Januar", "Februar", "März", "April"];
for ($i=0; $i<count($monate); $i++) {
echo $monate[$i] . "<br />";
}
Das funktioniert aber nur unter den Bedingungen, dass das Array, welches iteriert wird, aus numerischen Indizes besteht und nicht aus assoziativen Indizes.
Und das Array darf keine Lücken aufweisen, wie sie durch "unset
" oder eine manuelle Zuweisung entstehen können.
$monate = ["Januar", "Februar", "März", 4 =>"April"];
Gibt nur Januar bis März aus weil "count
" den Wert 4 liefert und das letzte Element nicht den Index 3 hat.
Foreach
Mit der "foreach
"-Schleife gehen wir einfach alle Elemente des Array durch, egal ob es sich um einen nummerischen oder assoziativen Index handelt.
$monate = ["Januar", "Februar", "März", 4 =>"April"];
foreach ($monate as $monat) {
echo $monat . "<br />";
}
Untersuchen
Nicht immer erstellen wir die Arrays selber, manchmal müssen wir uns die Informationen zum Array also selber organisieren, bevor wir damit weiter arbeiten können. Dazu gibt es verschiedene Funktionen in PHP.
count(Array)
Zählt die Elemente des Arrays und gibt eine Zahl zurück.
$bohrer = ["Metallbohrer", "Holzbohrer", "Steinbohrer"];
$saege = ["Bügelsäge", "Kreissäge", "Kettensäge"];
$schraubendreher = ["Schlitzschraubendreher", "Kreuzschraubendreher"];
$werkzeugkoffer = ["bohrer" => $bohrer, "saege" => $saege, "schraubendreher" => $schraubendreher];
echo count($werkzeugkoffer);
Die Variable "$werkzeugkoffer" enthält ein Array mit 3 Elementen, auch wenn in den einzelnen Elementen noch mehr Elemente zu finden sind.
Um die gesamte Anzahl aller in "$werkzeugkoffer" befindlichen Elemente zu bekommen, geben wir der Funktion "count
" noch einen weiteren Parameter mit.
Es reicht aus, wenn wir als zweiten Parameter den Wert 1 angeben, damit die Funktion "count
" alle Elemente zählt, also auch die darunter liegende Ebene.
echo count($werkzeugkoffer, 1);
isset(Array)
Die Funktion "isset
" prüft, ob ein Array definiert wurde.
Auch bei leeren Arrays wird "true
" ausgegeben, weil es dieses Array gibt.
is_array(Array)
Prüft, ob es sich bei dem angegebenen Array überhaupt um ein Array handelt.
empty(Array)
Die Funktion "empty
" überprüft, ob das Array leer ist ("true
") oder ob das Array Elemente beinhaltet ("false
").
Sollte empty ein Element prüfen, welches nicht existiert, wird true ausgegeben, weil kein Inhalt zu dem Array zu finden ist.
in_array(Suchelement, Array)
Die Funktion "in_array
" durchsucht das Array mit dem angegebenen Suchelement.
Transformieren
Es gibt sehr viele Funktion für Arrays, um sie zu teilen, zu verbinden, zu sortieren, umzuwandeln usw.
Weiter mit Funktionen