====== 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.