====== Array (Zuordnung von Werten zu Schlüsseln) ====== ===== Übersicht ===== **A. Mögliche Dimensionen eines Arrays:** - eindimensionales Array - zweidimensionales Array - mehrdimensionales Array **B. Indizierung eines Arrays:** - numerisches Array - Assoziatives Array ===== Elemente in ein Array einfügen ===== Die PHP-Funktion "array_push" fügt ein oder mehrere Elemente an das Ende eines Arrays an. Die PHP-Funktion "array_unshift" fügt ein oder mehr Elemente am Anfang eines Arrays ein. Mit folgender Funktion können Sie Elemente eines Arrays in gewünschter Position in einem anderen Array einfügen: function insert_array( $arr1, $pos, $arr2 ) { $totalArr1 = count( $arr1 ); $totalArr2 = count( $arr2 ); $newArr = array(); // neues Array erstellen if( $pos <= $totalArr1 && $totalArr2 > 0 ) { foreach( $arr1 as $key=>$val ) { $newArr[$key] = $val; // Inhalt vom 1. Array hinzufügen if( --$pos == 0 ) // Position erreicht { foreach( $arr2 as $key2=>$val2 ) { $newArr[$key2] = $val2; // Inhalt vom 2. Array hinzufügen } } } } return $newArr; } **Anwendungsbeispiel:** $navi = array( "home" => "Startseite", "about" => "Über uns", "contact" => "Kontakt" ); if( $Migtlied ) { $navi = array_insert($navi, 2, array( "members" => "Mitgliederbereich")); } ---- ===== Automatisches füllen eines Arrays ===== Mit der PHP-Funktion range() kann ein Array automatisch mit einer Zahlenreihe befüllt werden. Das folgende Beispiel erstellt ein Array mit jeder zweiten Zahlen zwischen 1 und 16: $numbers = range( 0, 16, 2 ); **Ergebnis:** Array ( [0] => 0 [1] => 2 [2] => 4 [3] => 6 [4] => 8 [5] => 10 [6] => 12 [7] => 14 [8] => 16 ) ---- ===== Sortierung ===== ==== Einfache Sortierung nach Schlüsselwert (key) ==== **Beispiel:** $Farben = [ 2 => "blau", 1 => "gelb", 3 => "grün", 0 => "rot", 4 => "schwarz" ]; ksort( $Farben ); print_r( $Farben ); **Ergebnis:** Array ( [0] => rot [1] => gelb [2] => blau [3] => grün [4] => schwarz ) ==== Sortierung eines Mehrdimensionalem Array ==== Beispiel: Alle Adress-Objekte sollen nach Postleitzahl sortiert werden: array_multisort( array_column( $adressen, 'plz' ), SORT_NATURAL | SORT_FLAG_CASE, $adressen ); **Hinweis:** Die Eigenschaft "plz" des PHP-Objektes $adressen muss hierfür die Sichtbarkeit "public" besitzen. ===== Filterung ===== Beispiel: Alle Spielscheine aussortieren, die nicht gewonnen haben: public function SpielscheinFilter( $Spielschein ) { return( $Spielschein['gewonnen'] ); } $Spielscheine = array_filter( $Spielscheine, "SpielscheinFilterFilter" ); Es werden nur Spielscheine berücksichtigt, bei denen die Callback-Funktion "true" zurück gibt. ===== Aufruf der Funktionen innerhalb von Klassen ===== Wenn die Funktionen "sortPLZ" und "SpielscheinFilter" in als Methoden in Klassen erstellt wurden können sie wie folgt aufgerufen werden: usort( $adressen, [ $this, "sortPLZ"] ); $Spielscheine = array_filter( $Spielscheine, [ $this, "SpielscheinFilterFilter" ] ); Anstelle von $this könen auch andere, externe Klassen angesprochen werden. Diese sind dann als Zeichenkette in Anführungsstrichen zu setzen. ===== Anonyme Funktionen ===== Seit der PHP-Version 5.3 können für alle oben aufgeführten Beispiele auch mit anonyme Funktionen benutzt werden. [[php:anonymous_functions|Weitere Informationen über anonyme Funktionen]] ---- ===== Schlüssel und Werte umdrehen ===== Mit der PHP-Funktion „array_flip()“ können die Schlüssel (keys) und Werte (values) eines Array einfach umgedreht werden. Ein Beispiel hierfür ist [[php:iso_3166|unten auf dieser Seite]] zu finden. ---- ===== Lücken im key eines numerischen Arrays entfernen ===== Der [[:pwgen|Passworggenerator]] ist ein schönes Beispiel dafür, wie ein Array von einem anderen extrahiert werden kann und wie die dadurch entstehenden Lücken im index eines numerischen Arrays entfernt werden.