Arrays Ein Array ist in PHP in Wirklichkeit eine geordnete Map (Abbildung). Eine Map ist ein Typ, der Werte zu Schlüsseln zuordnet. Dieser Typ ist für einige verschiedene Nutzungsarten optimiert. Er kann als ein Array verwendet werden, als Liste (Vektor), Hash-Tabelle (eine Implementierung einer Map), Wörterbuch, Sammlung, Stack, Queue (Warteschlange) und wahrscheinlich noch als vieles anderes. Da ein Wert eines Arrays ein weiteres Array sein kann, sind auch Bäume und mehrdimensionale Arrays möglich. Die Erläuterung dieser Datenstrukturen liegt nicht im Rahmen dieses Handbuchs, aber wenigstens ein Beispiel für jede ist hier angegeben. Um weitere Informationen zu erhalten wird auf die immense Literatur zu diesem weiten Feld verwiesen. Syntax Spezifizierung mittels <function>array</function> Ein Array kann durch das Sprachkonstrukt array erzeugt werden. Dies nimmt eine beliebige Anzahl kommaseparierter Schlüssel => Wert-Paare als Parameter entgegen. array( Schlüssel => Wert, Schlüssel2 => Wert2, Schlüssel3 => Wert3, ... ) Das Komma nach dem letzten Array-Element ist optional und kann weggelassen werden. Dies wird üblicherweise in einzeiligen Arrays getan, &dh;. array(1, 2) wird der Schreibweise array(1, 2, ) vorgezogen. Andererseits wird bei mehrzeiligen Arrays das Komma am Ende üblicherweise genutzt, da dies ein einfaches Hinzufügen weiterer Elemente am Ende erlaubt. Es gibt eine Kurzform der Array-Syntax, die array() durch [] ersetzt. Ein einfaches Array "bar", "bar" => "foo", ); // Verwendung der verkürzten Array-Syntax $array2 = [ "foo" => "bar", "bar" => "foo", ]; var_dump($array1, $array2); ?> ]]> Der Schlüssel kann entweder ein &integer; oder ein &string; sein. Der Wert kann beliebige Datentypen annehmen. Zusätzlich werden die folgenden Typkonvertierungen auf den Schlüssel angewendet: Strings, die einen gültigen dezimalen Int enthalten, werden zum entsprechenden Int umgewandelt, es sei denn, der Zahl ist ein +-Zeichen vorangestellt. Beispielsweise wird der Schlüssel "8" tatsächlich unter 8 gespeichert. Andererseits wird "08" nicht umgewandelt, da dies kein gültiger Ganzzahlwert ist. Floats werden ebenfalls zu Int umgewandelt, was ein Abschneiden des Dezimalbruchs zur Folge hat. Beispielsweise wird der Schlüssel 8.7 als 8 gespeichert. Bools werden ebenfalls zu Int umgewandelt, &dh; der Schlüssel &true; wird unter 1 gespeichert und der Schlüssel &false; unter 0. Null wird zu einem leeren String umgewandelt, &dh; der Schlüssel null wird tatsächlich unter "" gespeichert. Werte vom Typ Array oder &object; können nicht als Schlüssel verwendet werden. Ein Versuch, dies zu tun, wird die Warnung Illegal offset type zur Folge haben. Wenn mehrere Elemente in einer Array-Deklaration den gleichen Schlüssel verwenden, dann wird nur der letzte verwendet und alle weiteren werden überschrieben. Beispiel für Typumwandlung und Überschreibung "a", "1" => "b", 1.5 => "c", true => "d", ); var_dump($array); ?> ]]> &example.outputs; string(1) "d" } ]]> Da alle Schlüssel im obigen Beispiel zu 1 umgewandelt werden, wird der Wert dieses Elements durch jeden angegebenen Wert überschrieben und nur der letzte zugewiesene Wert "d" bleibt übrig. Arrays können in PHP gleichzeitig Schlüssel der Typen Int und String enthalten, da PHP nicht zwischen indizierten und assoziativen Arrays unterscheidet. Gemischte <type>Int</type>- und <type>String</type>-Schlüssel "bar", "bar" => "foo", 100 => -100, -100 => 100, ); var_dump($array); ?> ]]> &example.outputs; string(3) "bar" ["bar"]=> string(3) "foo" [100]=> int(-100) [-100]=> int(100) } ]]> Die Angabe des Schlüssels ist optional. Ist keiner angegeben, so wird PHP den bisher größten angegebenen Int-Schlüssel erhöhen und das Ergebnis als Schlüssel verwenden. Indizierte Arrays ohne Schlüssel ]]> &example.outputs; string(3) "foo" [1]=> string(3) "bar" [2]=> string(5) "hello" [3]=> string(5) "world" } ]]> Es ist auch möglich, den Schlüssel nur bei einigen Elementen anzugeben und bei anderen auszulassen: Schlüssel nicht bei allen Elementen "c", "d", ); var_dump($array); ?> ]]> &example.outputs; string(1) "a" [1]=> string(1) "b" [6]=> string(1) "c" [7]=> string(1) "d" } ]]> Hier ist zu erkennen, dass dem letzten Wert "d" der Schlüssel 7 zugewiesen wurde. Dies erfolgte, da der größte vorherige ganzzahlige Schlüssel 6 war. Beispiel für komplexe Typumwandlung und Überschreibung Dieses Beispiel enthält alle Variationen der Typumwandlung von Schlüsseln und des Überschreibens von Elementen. 'a', '1' => 'b', // der Wert "a" wird mit "b" überschrieben 1.5 => 'c', // der Wert "b" wird mit "c" überschrieben -1 => 'd', '01' => 'e', // da dies kein Integer-String ist, wird der Schlüssel // für 1 NICHT überschrieben '1.5' => 'f', // da dies kein Integer-String ist, wird der Schlüssel // für 1 NICHT überschrieben true => 'g', // der Wert "c" wird mit "g" überschrieben false => 'h', '' => 'i', null => 'j', // der Wert "i" wird mit "j" überschrieben 'k', // dem Wert "k" wird der Schlüssel 2 zugewiesen. Das liegt daran, // dass der größte ganzzahlige Schlüssel davor 1 war 2 => 'l', // der Wert "k" wird mit "l" überschrieben ); var_dump($array); ?> ]]> &example.outputs; string(1) "g" [-1]=> string(1) "d" ["01"]=> string(1) "e" ["1.5"]=> string(1) "f" [0]=> string(1) "h" [""]=> string(1) "j" [2]=> string(1) "l" } ]]> Beispiel mit negativem Index Wenn ein negativer ganzzahliger Schlüssel n zugewiesen wird, stellt PHP sicher, dass als nächstes der Schlüssel n+1 zugewiesen wird. ]]> &example.outputs; int(1) [-4]=> int(2) } ]]> Vor PHP 8.3.0 würde die Zuweisung eines negativen ganzzahligen Schlüssels n dazu führen, dass als nächstes der Schlüssel 0 zugewiesen wird, sodass das obige Beispiel zu diesem Ergebnis führen würde: int(1) [0]=> int(2) } ]]> Zugriff auf Elemente mit eckigen Klammern Auf Elemente eines Arrays kann durch Verwendung der Syntax array[Schlüssel] zugegriffen werden. Zugriff auf Array-Elemente "bar", 42 => 24, "multi" => array( "dimensional" => array( "array" => "foo" ) ) ); var_dump($array["foo"]); var_dump($array[42]); var_dump($array["multi"]["dimensional"]["array"]); ?> ]]> &example.outputs; Vor PHP 8.0.0 konnten sowohl eckige als auch geschweifte Klammern verwendet werden, um auf die Elemente eines Arrays zuzugreifen (&zb; werden im obigen Beispiel $array[42] und array{42} auf das gleiche Element zugreifen). Die Syntax für geschweifte Klammern ist seit PHP 7.4.0 veraltet und wird seit PHP 8.0.0 nicht mehr unterstützt. Array-Dereferenzierung ]]> Der Versuch, auf einen nicht definierten Arrayschlüssel zuzugreifen, entspricht dem Zugriff auf jede andere undefinierte Variable: ein Fehler der Stufe E_WARNING (der Stufe E_NOTICE vor PHP 8.0.0) wird ausgegeben und das Ergebnis ist &null;. Die Array-Dereferenzierung eines skalaren Werts, der kein String ist, ergibt &null;. Vor PHP 7.4.0 verursachte dies keine Fehlermeldung. Seit PHP 7.4.0 wird ein Fehler der Stufe E_NOTICE ausgegeben; seit PHP 8.0.0 ein Fehler der Stufe E_WARNING. Anlegen/Ändern mit eckigen Klammern Ein bestehendes Array kann verändert werden, indem man explizit Werte darin setzt. Dies wird getan, indem man dem Array Werte zuweist und dabei den Schlüssel in eckigen Klammern angibt. Der Schlüssel kann dabei weggelassen werden, was ein leeres Klammernpaar ([]) ergibt. $arr[Schlüssel] = Wert; $arr[] = Wert; // Schlüssel kann ein Int oder String sein // Wert kann einen beliebigen Typen haben Falls $arr noch nicht existiert oder auf &null; oder &false; gesetzt ist, wird es erzeugt; dies ist also eine alternative Methode, um ein Array zu erzeugen. Dieses Vorgehen wird jedoch nicht empfohlen, da, falls $arr bereits einen Wert enthält (&zb; ein String aus einer Requestvariable), dieser Wert bestehen bleibt und [] tatsächlich für den String-Zugriffs-Operator stehen kann. Es ist immer besser, eine Variable durch direkte Zuweisung zu initialisieren. Seit PHP 7.1.0 löst die Anwendung des leeren Index-Operators auf eine Zeichenkette einen fatalen Fehler aus. Zuvor wurde die Zeichenkette stillschweigend in ein Array umgewandelt. Seit PHP 8.1.0 ist das Erstellen eines neuen Arrays aus &false;-Werten veraltet. Es ist weiterhin erlaubt, ein neues Array aus &null;- und undefinierten Werten zu erstellen. Um einen bestimmten Wert zu ändern, kann man dem Element anhand seines Schlüssels einen Wert zuweisen. Um ein Schlüssel-Wert-Paar zu entfernen, kann man die Funktion unset darauf anwenden. Verwenden von eckigen Klammern bei Arrays 1, 12 => 2); $arr[] = 56; // Dies ist dasselbe wie $arr[13] = 56; // an dieser Stelle im Programmablauf $arr["x"] = 42; // Dies fügt ein neues Element zum Array // mit dem Schlüssel "x" hinzu unset($arr[5]); // Dies entfernt das Element aus dem Array var_dump($arr); unset($arr); // Dies löscht das gesamte Array var_dump($arr); ?> ]]> Wie vorher bereits erwähnt, wird, wenn kein Schlüssel angegeben ist, das Maximum der bestehenden Schlüssel vom Typ Int verwendet und der neue Schlüssel wird das Maximum plus 1 sein (aber mindestens 0). Wenn noch kein Int-Schlüssel existiert wird der Schlüssel 0 (Null) verwendet. Zu beachten ist, dass der Maximalwert der Integer-Schlüssel dafür aktuell nicht im Array existieren muss. Er muss nur zu irgendeinem Zeitpunkt im Array existiert haben, seitdem das Array zuletzt neu indiziert wurde. Das folgende Beispiel erläutert dies: $value) { unset($array[$i]); } print_r($array); // Ein Element wird hinzugefügt // (Beachten Sie, dass der neue Schlüssel 5 ist statt 0) $array[] = 6; print_r($array); // Neue Indizierung $array = array_values($array); $array[] = 7; print_r($array); ?> ]]> &example.outputs; 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 ) Array ( ) Array ( [5] => 6 ) Array ( [0] => 6 [1] => 7 ) ]]> Destrukturierung (Zerlegung) von Arrays Arrays können mit den Sprachkonstrukten [] (seit PHP 7.1.0) oder list destrukuriert werden. Diese Konstrukte können verwendet werden, um ein Array in einzelne Variablen zu zerlegen. Destrukturieren eines Arrays ]]> Die Destrukturierung von Arrays kann in &foreach; verwendet werden, um ein mehrdimensionales Array zu zerlegen, während darüber iteriert wird. Destrukturieren eines Arrays in foreach ]]> Array-Elemente werden ignoriert, wenn die Variable nicht angegeben wird. Die Destrukturierung von Arrays beginnt immer beim Index 0. Ignoren von Elementen ]]> Seit PHP 7.1.0 können auch assoziative Arrays destrukturiert werden. Da der Index explizit angegeben werden kann, ermöglicht dies auch in numerisch indizierten Arrays eine einfachere Auswahl des richtigen Elements. Destrukturieren von assoziativen Arrays 1, 'bar' => 2, 'baz' => 3]; // Zuweisen des Elements bei Index 'baz' an die Variable $three ['baz' => $three] = $source_array; echo $three, PHP_EOL; // gibt 3 aus $source_array = ['foo', 'bar', 'baz']; // Zuweisen des Elements bei Index 2 an die Variable $baz [2 => $baz] = $source_array; echo $baz, PHP_EOL; // gibt "baz" aus ?> ]]> Array-Destrukturierung kann verwendet werden, um auf einfache Weise zwei Variablen zu vertauschen. Vertauschen von zwei Variablen ]]> Der Spread-Operator (...) wird bei Zuweisungen nicht unterstützt. Wird versucht, auf einen nicht definierten Array-Schlüssel zuzugreifen, so ist dies dasselbe wie der Zugriff auf eine andere undefinierte Variable: Eine Fehlermeldung der Stufe E_WARNING (der Stufe E_NOTICE vor PHP 8.0.0) wird ausgegeben und das Ergebnis ist &null;. Bei der Destrukturierung eines skalaren Werts wird allen Variablen &null; zugewiesen. Nützliche Funktionen Es gibt einige nützliche Funktionen für die Arbeit mit Arrays, die im Abschnitt Array-Funktionen nachgeschlagen werden können. Die Funktion unset erlaubt es, Schlüssel aus einem Array zu entfernen. Zu beachten ist dabei, dass das Array nicht neu indiziert wird. Falls ein echtes Verhalten von "Entfernen und Verschieben" gewünscht ist, dann kann das Array mittels array_values neu indiziert werden. Entfernen von Zwischenelementen 'one', 2 => 'two', 3 => 'three'); /* dies wird ein Array erzeugen, das wie folgt definiert worden wäre $a = array(1 => 'one', 3 => 'three'); und NICHT so $a = array(1 => 'one', 2 =>'three'); */ unset($a[2]); var_dump($a); $b = array_values($a); // Nun ist $b array(0 => 'one', 1 =>'three') var_dump($b); ?> ]]> Die Kontrollstruktur &foreach; existiert speziell für Arrays. Sie bietet eine einfache Möglichkeit, ein Array zu durchlaufen. Dos und Dont's für Arrays (was man tun sollte und was nicht) Wieso ist <literal>$foo[bar]</literal> falsch? Verwenden Sie immer Anführungszeichen um ein Arrayindex-Zeichenkettenliteral. Beispielsweise ist $foo['bar'] richtig, $foo[bar] hingegen nicht. Aber wieso? Es ist üblich, die folgende Schreibweise in alten Skripten zu finden: ]]> Dies ist falsch, funktioniert aber. Der Grund dafür ist, dass dieser Code eine undefinierte Konstante (bar) anstatt eines Strings verwendet ('bar' - beachten Sie die Anführungszeichen). Dies funktioniert, da PHP einen nackten String (ein String ohne Anführungszeichen, der keinem bekannten Symbol entspricht) automatisch in einen String umwandelt, welcher den nackten String enthält. Beispielsweise wird PHP, wenn keine Konstante namens bar definiert ist, diese automatisch durch den String 'bar' ersetzen und verwenden. Das Rückfallverhalten, eine nicht definierte Konstante als nackte Zeichenkette zu interpretieren, löst einen Fehler der Stufe E_NOTICE aus. Dies ist seit PHP 7.2.0 missbilligt und löst einen Fehler der Stufe E_WARNING aus. Mit PHP 8.0.0 wurde es entfernt und löst eine Error-Exception aus. Dies bedeutet nicht, dass man den Schlüssel immer in Anführungszeichen setzen muss. Setzen Sie keine Schlüssel in Anführungszeichen, welche Konstanten oder Variablen sind, da dies PHP daran hindern wird, diese zu interpretieren. Anführungszeichen bei Schlüsseln ]]> &example.outputs; Weitere Beispiele zur Erläuterung dieses Verhaltens: Weitere Beispiele 'apple', 'veggie' => 'carrot'); // Korrekt echo $arr['fruit'], PHP_EOL; // apple echo $arr['veggie'], PHP_EOL; // carrot // Inkorrekt. Dies Funktioniert nicht und PHP löst löst einen Error aus, // da eine undefinierte Konstante namens fruit verwendet wird // // Error: Undefined constant "fruit" try { echo $arr[fruit]; } catch (Error $e) { echo get_class($e), ': ', $e->getMessage(), PHP_EOL; } // Dies definiert eine Konstante, um darzustellen, was hier passiert. Der Wert // 'veggie' wird einer Konstanten namens fruit zugewiesen define('fruit', 'veggie'); // Beachten Sie nun den Unterschied echo $arr['fruit'], PHP_EOL; // apple echo $arr[fruit], PHP_EOL; // carrot // Hier ist es in Ordnung, da dies innerhalb eines Strings ist. Innerhalb eines // Strings wird nicht nach Konstanten gesucht, weshalb kein Fehler auftritt echo "Hello $arr[fruit]", PHP_EOL; // Hello apple // Mit einer Ausnahme: Klammern um ein Array sorgen dafür, dass Konstanten // interpretiert werden echo "Hello {$arr[fruit]}", PHP_EOL; // Hello carrot echo "Hello {$arr['fruit']}", PHP_EOL; // Hello apple // Konkatenation (Verkettung) ist eine weitere Möglichkeit echo "Hello " . $arr['fruit'], PHP_EOL; // Hello apple ?> ]]> ]]> Wie im Abschnitt zur Syntax gezeigt, muss der Inhalt der eckigen Klammern '[' und ']') ein Ausdruck sein. Das bedeutet, dass folgendes funktioniert: ]]> Dieses Beispiel zeigt, wie der Rückgabewert einer Funktion als Arrayindex verwendet wird. PHP kann auch Konstanten auflösen: ]]> Es ist zu beachten, dass E_ERROR ein gültiger Bezeichner ist, genau wie bar im ersten Beispiel. Das vorherige Beispiel ist gleichbedeutend mit: ]]> da E_ERROR gleich 1 ist usw. Wieso ist es also schlecht? Irgendwann in der Zukunft könnte das PHP-Team eine weitere Konstante oder ein Schlüsselwort hinzufügen oder eine Konstante in anderem Code könnte Einfluss nehmen. Es ist beispielsweise bereits falsch, die Wörter empty oder default so zu schreiben, da dies reservierte Schlüsselwörter sind. Zur Wiederholung: innerhalb eines Strings in doppelten Anführungszeichen ist es korrekt, einen Arrayschlüssel ohne Anführungszeichen zu schreiben, weswegen "$foo[bar]" zulässig ist. Die obigen Beispiele erklären dies ebenso, wie der Abschnitt zum Parsen von Variablen in Strings. Konvertierung in ein Array Für jeden der Typen &integer;, &float;, &string;, &boolean; und &resource; führt eine Konvertierung eines Wertes in ein Array zu einem Array mit einem einzigen Wert mit dem Index Null und dem Wert des Skalaren, der konvertiert wurde. Anders ausgedrückt ist (array) $scalarValue exakt identisch mit array($scalarValue). Wenn ein &object; in ein Array konvertiert wird, so ist das Ergebnis ein Array, dessen Werte die Eigenschaften des Objekts sind. Die Schlüssel sind die Namen der Eigenschaften des Objektes mit ein paar nennenswerten Ausnahmen: Eigenschaften mit Ganzzahl-Namen sind nicht zugreifbar, privaten Variablen wird der Name der Klasse vorangestellt und protected Variablen wird dem Variablennamen ein '*' vorangestellt. Diese vorangestellten Werte haben NUL-Bytes auf beiden Seiten. Nicht-initialisierte typisierte Eigenschaften werden stillschweigend verworfen. Konvertierung in ein Array {1} = null; } } var_export((array) new A()); ?> ]]> &example.outputs; NULL, '' . "\0" . '*' . "\0" . 'C' => NULL, 'D' => NULL, 1 => NULL, ) ]]> Diese NUL-Bytes können zu einem unerwarteten Verhalten führen: Umwandeln eines Objekts in ein Array ]]> &example.outputs; NULL ["AA"]=> NULL ["AA"]=> NULL } ]]> Im obigen Beispiel scheint es zwei Schlüssel namens 'AA' zu geben, obwohl einer davon eigentlich '\0A\0A' ist. Die Konvertierung von &null; in ein Array führt zu einem leeren Array. Vergleiche Mit der Funktion array_diff und mit Array-Operatoren ist es möglich, Arrays zu vergleichen. Entpacken von Arrays Ein Array, dem ein ... vorangestellt ist, wird bei der Definition des Arrays an Ort und Stelle expandiert (entpackt). Nur Arrays und Objekte, die Traversable implementieren, können entpackt werden. Das Entpacken von Arrays mit ... ist seit PHP 7.4.0 verfügbar. Dies wird auch als Spread-Operator bezeichnet. Es ist möglich, ein Array mehrmals zu entpacken und normale Elemente vor oder nach dem Operator ... hinzuzufügen: Einfaches Entpacken von Arrays 'd']; // ['a', 'b', 'c' => 'd'] var_dump($arr1, $arr2, $arr3, $arr4, $arr5, $arr6); ?> ]]> Das Entpacken eines Arrays mit dem Operator ... folgt der Syntax der Funktion array_merge. Das heißt, nachfolgende Zeichenketten-Schlüssel überschreiben vorherige und Integer-Schlüssel werden neu nummeriert: Entpacken eines Arrays mit doppeltem Schlüssel 1]; $arr2 = ["a" => 2]; $arr3 = ["a" => 0, ...$arr1, ...$arr2]; var_dump($arr3); // ["a" => 2] // Integer-Schlüssel $arr4 = [1, 2, 3]; $arr5 = [4, 5, 6]; $arr6 = [...$arr4, ...$arr5]; var_dump($arr6); // [1, 2, 3, 4, 5, 6] // Das ergibt [0 => 1, 1 => 2, 2 => 3, 3 => 4, 4 => 5, 5 => 6] // wobei die ursprünglichen Integer-Schlüssel nicht beibehalten wurden. ?> ]]> Schlüssel, die weder Integer noch Zeichenketten sind, lösen einen TypeError aus. Solche Schlüssel können nur von einem Traversable-Objekt erzeugt werden. Vor PHP 8.1 wird das Entpacken eines Arrays, das einen String-Schlüssel enthält, nicht unterstützt: 4]; $arr3 = [...$arr1, ...$arr2]; // Fatal error: Uncaught Error: Cannot unpack array with string keys in example.php:5 $arr4 = [1, 2, 3]; $arr5 = [4, 5]; $arr6 = [...$arr4, ...$arr5]; // works. [1, 2, 3, 4, 5] ?> ]]> Beispiele Der Array-Typ in PHP ist sehr vielseitig. Hier sind einige Beispiele: Vielseitigkeit von Arrays 'red', 'taste' => 'sweet', 'shape' => 'round', 'name' => 'apple', 4 // der Schlüssel wird 0 sein ); $b = array('a', 'b', 'c'); var_dump($a, $b); // . . .ist komplett gleichbedeutend mit: $a = array(); $a['color'] = 'red'; $a['taste'] = 'sweet'; $a['shape'] = 'round'; $a['name'] = 'apple'; $a[] = 4; // der Schlüssel wird 0 sein $b = array(); $b[] = 'a'; $b[] = 'b'; $b[] = 'c'; // Nachdem der obige Code ausgeführt wurde, wird $a das Array // array('color' => 'red', 'taste' => 'sweet', 'shape' => 'round', // 'name' => 'apple', 0 => 4) sein und $b wird das Array // array(0 => 'a', 1 => 'b', 2 => 'c') oder einfach array('a', 'b', 'c') // sein var_dump($a, $b); ?> ]]> Verwendung von array() 4, 'OS' => 'Linux', 'lang' => 'englisch', 'short_tags' => true ); var_dump($map); // Streng numerische Schlüssel // Das ist gleichbedeutend mit array(0 => 7, 1 => 8, ...) $array = array( 7, 8, 0, 156, -10 ); var_dump($array); $switching = array( 10, // Schlüssel = 0 5 => 6, 3 => 7, 'a' => 4, 11, // Schlüssel = 6 (das Maximum der Integer-Schlüssel war 5) '8' => 2, // Schlüssel = 8 (Integer!) '02' => 77, // Schlüssel = '02' 0 => 12 // Der Wert 10 wird mit 12 überschrieben ); var_dump($switching); // Leeres array $empty = array(); var_dump($empty); ?> ]]> Sammlung ]]> &example.outputs; Die Veränderung der Werte eines Arrays ist mit der Übergabe als Referenz direkt möglich. Elemente in der Schleife verändern ]]> &example.outputs; ROT [1] => BLAU [2] => GRÜN [3] => GELB ) ]]> Dieses Beispiel erzeugt ein Array mit erstem Schlüssel 1. 1-basierte Indizes 'Januar', 'Februar', 'März'); print_r($firstquarter); ?> ]]> &example.outputs; Januar [2] => Februar [3] => März ) ]]> Füllen eines Arrays ]]> Arrays sind geordnet. Die Reihenfolge kann durch verschiedene Sortierfunktionen verändert werden. Siehe Array-Funktionen für mehr Informationen. Die Funktion count kann verwendet werden, um die Anzahl der Elemente eines Arrays zu ermitteln. Ein Array sortieren ]]> Da die Werte eines Arrays beliebig sein können, können diese auch andere Arrays sein. Dies ermöglicht die Erzeugung von rekursiven und mehrdimensionalen Arrays. Rekursive und mehrdimensionale Arrays array ( "a" => "orange", "b" => "banana", "c" => "apple" ), "numbers" => array ( 1, 2, 3, 4, 5, 6 ), "holes" => array ( "first", 5 => "second", "third" ) ); var_dump($fruits); // Einige Beispiele für den Zugriff auf die Werte in den obigen Beispielen echo $fruits["holes"][5]; // gibt "second" aus echo $fruits["fruits"]["a"]; // gibt "orange" aus unset($fruits["holes"][0]); // entfernt "first" // Ein neues mehrdimensionales Array erzeugen $juices["apple"]["green"] = "good"; var_dump($juices); ?> ]]> Die Zuweisung eines Arrays beinhaltet immer eine Kopie der Werte. Verwenden Sie den Referenz-Operator, um ein Array per Referenz zu kopieren. Kopieren eines Arrays ]]>