Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
php:array [2015/04/08 10:43] webproducer angelegt |
php:array [2024/04/17 09:39] (aktuell) webproducer [Sortierung eines Mehrdimensionalem Array] |
||
---|---|---|---|
Zeile 13: | Zeile 13: | ||
- numerisches Array | - numerisches Array | ||
- Assoziatives 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: | ||
+ | |||
+ | <code php array_insert.php> | ||
+ | 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; | ||
+ | } | ||
+ | |||
+ | |||
+ | </code> | ||
+ | |||
+ | **Anwendungsbeispiel:** | ||
+ | |||
+ | <code php> | ||
+ | $navi = array( | ||
+ | "home" => "Startseite", | ||
+ | "about" => "Über uns", | ||
+ | "contact" => "Kontakt" | ||
+ | ); | ||
+ | |||
+ | if( $Migtlied ) | ||
+ | { | ||
+ | $navi = array_insert($navi, 2, array( "members" => "Mitgliederbereich")); | ||
+ | } | ||
+ | </code> | ||
---- | ---- | ||
- | ===== Sortierung ===== | + | ===== 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: | ||
+ | |||
+ | <code php> | ||
+ | $numbers = range( 0, 16, 2 ); | ||
+ | </code> | ||
+ | |||
+ | **Ergebnis:** | ||
+ | |||
+ | <code php> | ||
+ | Array | ||
+ | ( | ||
+ | [0] => 0 | ||
+ | [1] => 2 | ||
+ | [2] => 4 | ||
+ | [3] => 6 | ||
+ | [4] => 8 | ||
+ | [5] => 10 | ||
+ | [6] => 12 | ||
+ | [7] => 14 | ||
+ | [8] => 16 | ||
+ | ) | ||
+ | </code> | ||
---- | ---- | ||
+ | |||
+ | ===== Sortierung ===== | ||
+ | |||
+ | ==== Einfache Sortierung nach Schlüsselwert (key) ==== | ||
+ | |||
+ | **Beispiel:** | ||
+ | |||
+ | <code php> | ||
+ | $Farben = [ 2 => "blau", 1 => "gelb", 3 => "grün", 0 => "rot", 4 => "schwarz" ]; | ||
+ | ksort( $Farben ); | ||
+ | print_r( $Farben ); | ||
+ | </code> | ||
+ | |||
+ | **Ergebnis:** | ||
+ | |||
+ | <code> | ||
+ | Array ( [0] => rot [1] => gelb [2] => blau [3] => grün [4] => schwarz ) | ||
+ | </code> | ||
+ | |||
+ | ==== Sortierung eines Mehrdimensionalem Array ==== | ||
+ | |||
+ | Beispiel: Alle Adress-Objekte sollen nach Postleitzahl sortiert werden: | ||
+ | |||
+ | <code php> | ||
+ | array_multisort( array_column( $adressen, 'plz' ), SORT_NATURAL | SORT_FLAG_CASE, $adressen ); | ||
+ | </code> | ||
+ | |||
+ | **Hinweis:** Die Eigenschaft "plz" des PHP-Objektes $adressen muss hierfür die Sichtbarkeit "public" besitzen. | ||
===== Filterung ===== | ===== Filterung ===== | ||
Zeile 26: | Zeile 127: | ||
<code php> | <code php> | ||
- | function SpielscheinFilter( $Spielschein ) | + | public function SpielscheinFilter( $Spielschein ) |
{ | { | ||
return( $Spielschein['gewonnen'] ); | return( $Spielschein['gewonnen'] ); | ||
Zeile 35: | Zeile 136: | ||
Es werden nur Spielscheine berücksichtigt, bei denen die Callback-Funktion "true" zurück gibt. | 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: | ||
+ | |||
+ | <code php> | ||
+ | usort( $adressen, [ $this, "sortPLZ"] ); | ||
+ | $Spielscheine = array_filter( $Spielscheine, [ $this, "SpielscheinFilterFilter" ] ); | ||
+ | </code> | ||
+ | |||
+ | 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. | ||
+ |