1. Wert am Ende hinzufügen
Die typische Syntax zum Hinzufügen eines Wertes $wert zu einem Array $array lautet „$array[] = $wert;”, dargestellt im folgenden Beispiel:
<?php $arr = array(1, 2, 3); $arr[] = 4; print_r($arr); ?>
Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 )
Statt PHP die Suche nach dem passenden Schlüssel zu überlassen, kann man diesen auch selbständig wählen. Der letzte Schlüssel entspricht der Anzahl der Elemente im Array minus 1, also count($array)-1. Das nächste Element muss entsprechend den Schlüssel count($array)-1+1 bzw. einfacher count($array) haben.
<?php $arr = array(1, 2, 3); $arr[count($arr)] = 4; print_r($arr); ?>
Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 )
Ebenfalls gewählt werden kann der Plus-Operator, wenn der hinzuzufügende Wert in ein Array umgewandelt wird. Dabei ist zu beachten, dass $array1 + $array2 zwar $array1 mit $array2 verbindet, aber nur diejenigen Werte aus $array2 in $array1 übernommen werden, deren Schlüssel noch nicht in $array1 vorhanden ist.
<?php $arr = array(1, 2, 3); $arr2 = array(0=>4, 4=>5); // der Schluessel des Wertes 4 ist schon belegt, daher wird 4 nicht hinzugefuegt $arr = $arr + $arr2; print_r($arr); ?>
Array ( [0] => 1 [1] => 2 [2] => 3 [4] => 5 )
Folgende Wege, einen Wert am Ende einzufügen sind falsch, da die Werte nicht in Arrays umgewandelt wurden:
- $arr = $arr + 4: Erzeugt einen Fatal Error.
- $arr += 4: Erzeugt einen Fatal Error.
Vergleichbar zu etwa JavaScript gibt es auch in PHP eine push-Funktion. Mit array_push($array, $wert) kann der Wert $wert zum Array $array hinzugefügt werden.
<?php $arr = array(1, 2, 3); array_push($arr, 4); print_r($arr); ?>
Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 )
Reichlich umständlich ist die Verwendung von array_pad($array, $anzahl, $wert), welches am Ende vom Array $array insgesamt $anzahl-count($array) neue Werte mit dem Inhalt $wert hinzufügt. Setzt man $anzahl auf count($array)+1 und $wert auf den hinzuzufügenden Wert, dann wird entsprechend der gewünschte Wert am Ende exakt ein mal eingefügt.
<?php $arr = array(1, 2, 3); $arr = array_pad($arr, count($arr)+1, 4); print_r($arr); ?>
Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 )
Verwendet werden kann auch array_merge($array1, $array2), welches alle Werte aus $array2 zu $array1 (am Ende) hinzufügt, also die beiden Arrays verbindet. Der einzufügende Wert kann mit array($wert) oder (array)$wert in ein Array umgewandelt werden. Diese Funktion ist insbesondere dann nützlich, wenn man mehr als einen Wert hinzufügen will.
<?php $arr = array(1, 2, 3); $arr = array_merge($arr, array(4)); print_r($arr); ?>
Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 )
2. Wert am Anfang hinzufügen
Das Hinzufügen von Werten am Anfang des Arrays ist schwieriger als das Einfügen am Ende, da alle bereits vorhandenen Werte verschoben werden müssen. Es gibt keinen einfachen Operator, der analog zur bereits vorgestellten $array[]-Syntax eingesetzt werden kann, um am Anfang Elemente hinzuzufügen. Letztlich können allerdings alle zuvor beschriebenen Wege weiterverwendet werden, wenn das Array ein mal vor deren Anwendung umgedreht wird und ein mal danach. Das Umdrehen erfolgt mit array_reverse($arr). Die neuen Elemente müssen ebenfalls umgedreht angefügt werden.
<?php $arr = array(10, 11, 12); $arr = array_reverse($arr); $arr[] = 9; $arr[count($arr)] = 8; $arr = array_reverse($arr); print_r($arr); ?>
Array ( [0] => 8 [1] => 9 [2] => 10 [3] => 11 [4] => 12 )
Das Array mehrmals umzudrehen ist offensichtlich aufwendig. Besser ist es, zumindest beim Hinzufügen eines einzelnen Wertes die Funktion array_unshift($array, $wert) zu benutzen. Diese funktioniert analog zu array_push($array, $wert) und fügt den Wert $wert am Anfang des Arrays $array hinzu.
<?php $arr = array(10, 11, 12); array_unshift($arr, 9); print_r($arr); ?>
Array ( [0] => 9 [1] => 10 [2] => 11 [3] => 12 )
Die bereits vorgestellte Methode array_pad($array, $anzahl, $wert) lässt sich ebenfalls weiterverwenden, wenn für $anzahl ein negativer Wert eingesetzt wird. Dieser signalisiert, dass array_pad() zusätzliche Elemente am Anfang des Arrays erzeugen soll.
<?php $arr = array(10, 11, 12); $arr = array_pad($arr, (-1)*(count($arr)+1), 9); print_r($arr); ?>
Array ( [0] => 9 [1] => 10 [2] => 11 [3] => 12 )
Ebenfalls weiterverwenden lässt sich array_merge($array1, $array2), dafür muss dasjenige Array zu dem hinzugefügt werden soll nur als zweiter Parameter übergeben werden. An erste Stelle setzt man entsprechend den gewünschten Wert als Array (bzw. die gewünschten Werte, falls mehrere am Anfang eingefügt werden sollen).
<?php $arr = array(10, 11, 12); $arr = array_merge(array(9), $arr); print_r($arr); ?>
Array ( [0] => 9 [1] => 10 [2] => 11 [3] => 12 )