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.

Array erstellen

$a array();

Die Variable "$a" besteht jetzt aus einem Array ohne Inhalt.

Array mit Inhalt erstellen

$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.

Array mit unterschiedlichen Datentypen erstellen

$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.

Auf Inhalt aus Array zugreifen

$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.

Inhalt vom Array ersetzen

$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.

dem Array neuen Inhalt geben

$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.

dem Array neuen Inhalt geben

$monate[] = "August";

Um ein Element aus dem Array zu entfernen, wird die Funktion "unset" verwendet.

Inhalt aus dem Array entfernen

unset($monate[0]);

Wenn kein Index angegeben wird, der entfernt werden soll, dann wird das gesamte Array entfernt.

Inhalt aus dem Array entfernen

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.

Achtung

Nicht verwechseln mit dem -> Operator aus der Objektorientierten Programmierung.

Assoziatives Array erstellen

$person = array("name" => "Mike", "ort" => "Hamburg", "alter" => 40);
print_r($person);
Hinweis

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.

Assoziatives Array 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".

Array im JSON-Format

$monate = ["Januar", "Februar", "März"];
print_r($monate);

Auch das Erstellen von assoziativen Arrays kann im JSON-Format durchgeführt werden.

Assoziatives Array im JSON-Format erstellen

$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.

Multidimensionale Arrays erstellen

$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.

Multidimensionale Arrays mit mehreren Variablen erstellen

$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.

Ausgabe aus multidimensionale Arrays

print_r($werkzeugkoffer["saege"]);

Um ganz gezielt ein Werkzeug zu entnehmen, schreiben wir dahinter den Index der nächsten Ebene in eckigen Klammern.

Ausgabe aus multidimensionale Arrays

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.

Inhalt vom Array über eine for Schleife 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.

Gemischtes Array

$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.

Inhalt vom Array über eine foreach Schleife ausgeben lassen

$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.

Arraygröße ausgeben lassen

$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.

Arraygröße ausgeben lassen

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").

Hinweis

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