Menu

PHP Arrays: erstellen, auslesen, durchlaufen, ausgeben

Ein PHP-Array ist eine geordnete Liste von Werten, jeder unter einem Schlüssel gespeichert: $fruits = ['apple', 'banana']; liest du als $fruits[0]. Hier: Arrays erstellen, Elemente lesen und ändern, darüber iterieren, sie ausgeben und welche Array-Funktion wofür.

Diese Seite enthält ausführbare Editoren - bearbeiten, ausführen und Ausgabe sofort sehen.

Ein PHP-Array speichert eine Liste von Werten unter Schlüsseln. Du erstellst eines mit eckigen Klammern, $fruits = ['apple', 'banana', 'cherry'];, und liest ein Element über seinen Index, $fruits[0]. Indizes beginnen bei 0, und count($fruits) liefert die Anzahl der Elemente.

Jedes PHP-Array ist eine geordnete Map: Jeder Wert steht unter einem Schlüssel. Wenn du die Schlüssel nicht wählst, nummeriert PHP sie mit 0, 1, 2..., und du bekommst ein indiziertes Array. Wenn du sie selbst wählst (['name' => 'Ada']), bekommst du ein assoziatives Array. Beides ist derselbe Typ array.

Ein Array erstellen

Eckige Klammern sind die übliche Syntax. array() ist die ältere Schreibweise und erzeugt genau dasselbe. range() baut eine Liste von Zahlen oder Buchstaben, und array_fill() wiederholt einen Wert.

Ein PHP-Array kann Werte verschiedener Typen gleichzeitig enthalten, auch andere Arrays. Ein Array aus Arrays ist ein mehrdimensionales Array, der übliche Weg, Datenzeilen zu halten.

Das erste und das letzte Element

PHP hat keine negativen Indizes. $arr[-1] bedeutet nicht „das letzte“: Es sucht einen Schlüssel namens -1, und wenn es keinen gibt, gibt PHP Warning: Undefined array key -1 aus. Verwende array_key_first() und array_key_last(), die auch funktionieren, wenn die Schlüssel nicht bei 0 beginnen.

end($queue) liefert ebenfalls den letzten Wert, verschiebt aber als Nebenwirkung den internen Zeiger des Arrays, deshalb ist die Version über den Schlüssel die klarere Wahl.

Ein Array ausgeben

echo $arr funktioniert nicht: Es gibt das Wort Array und eine Warnung aus. Nimm die Ausgabe, die zur Aufgabe passt:

  • print_r($arr) für eine lesbare Ausgabe beim Debuggen.
  • var_dump($arr), um zusätzlich Typ und Länge jedes Werts zu sehen.
  • implode(', ', $arr), um die Werte für die Anzeige zu einem String zu machen.
  • json_encode($arr), um das Array an JavaScript oder eine API zu schicken.

Die Seite zu print_r und var_dump behandelt die Formatierungsoptionen, einschließlich der Ausgabe eines Arrays in HTML.

Über ein Array iterieren

foreach ist die Schleife für Arrays: Sie gibt dir jeden Wert und auf Wunsch auch den Schlüssel. Eine for-Schleife mit Index funktioniert ebenfalls bei indizierten Arrays, deren Schlüssel lückenlos ab 0 laufen.

Arrays werden kopiert, nicht geteilt

Ein Array einer anderen Variable zuzuweisen oder an eine Funktion zu übergeben, erzeugt eine Kopie. Eine Änderung an der Kopie lässt das Original in Ruhe. Füge dem Parameter ein & hinzu, wenn eine Funktion das Array des Aufrufers ändern soll.

Array-Funktionen nach Aufgabe

PHP bringt mehr als 70 Array-Funktionen mit. Das sind die, die du am häufigsten brauchst, jede mit eigener Seite:

AufgabeFunktion
Ans Ende anhängenarray_push() oder $arr[] =
Anzahl der Elementecount()
Prüfen, ob ein Wert existiertin_array()
Den Schlüssel eines Werts findenarray_search()
Prüfen, ob ein Schlüssel existiertarray_key_exists()
Arrays zusammenführenarray_merge()
Jeden Wert umwandelnarray_map()
Einige Werte behaltenarray_filter()
Sortierensort(), usort() und Verwandte
Ein Element entfernenunset(), array_splice()
Einen Teil herausnehmenarray_slice()
Duplikate entfernenarray_unique()
String in Array und zurückexplode(), implode()

Schlüssel, die still zusammenfallen

Array-Schlüssel sind entweder Ganzzahlen oder Strings, und PHP wandelt manche Schlüssel für dich um. Ein String, der wie eine ganze Dezimalzahl aussieht, etwa "1", wird zur Ganzzahl 1, also sind $a["1"] und $a[1] derselbe Platz. "01" und "1.5" bleiben Strings. Deshalb kann ein Array, das aus Formulareingaben oder einer CSV gebaut wird, am Ende weniger Elemente haben als erwartet.

Häufig gestellte Fragen

Wie erstelle ich ein Array in PHP?

Mit eckigen Klammern: $colors = ['red', 'green', 'blue'];. Ein leeres Array ist $items = [];. Die ältere Syntax array('red', 'green') macht dasselbe und funktioniert weiterhin.

Wie gebe ich ein Array in PHP aus?

echo kann kein Array ausgeben (es gibt das Wort Array und eine Warnung aus). Verwende print_r($arr) für eine lesbare Ausgabe, var_dump($arr), um auch die Typen zu sehen, oder echo implode(', ', $arr), um die Werte in einer Zeile auszugeben.

Wie bekomme ich in PHP das letzte Element eines Arrays?

Mit $arr[array_key_last($arr)] (PHP 7.3+) oder end($arr). PHP hat keine negativen Indizes: $arr[-1] sucht einen Schlüssel namens -1, den es meist nicht gibt.

Werden PHP-Arrays als Wert oder als Referenz übergeben?

Als Wert. $b = $a; gibt $b eine eigene Kopie, also ändert eine Änderung an $b nicht $a. Um das Array des Aufrufers in einer Funktion zu ändern, deklarierst du den Parameter als Referenz: function add(array &$list).

Was ist der Unterschied zwischen einem indizierten und einem assoziativen Array in PHP?

Es ist derselbe Typ. Ein indiziertes Array hat Ganzzahl-Schlüssel 0, 1, 2..., die PHP für dich vergibt; ein assoziatives Array verwendet Schlüssel, die du wählst, meist Strings wie 'name'. Ein Array kann beides sogar mischen.

Illustration der Programmiersprachen bei Coddy

Lerne mit Coddy zu programmieren

LOS GEHT'S