Arrays

Arrays reagieren wie Hash-Tabellen (assoziative Arrays) und indizierte Arrays (Vektoren).

Eindimensionale Arrays

PHP unterstützt sowohl skalare als auch assoziative Arrays. Letztendlich gibt es keinen Unterschied zwischen den beiden. Sie können ein Array erzeugen, indem sie die list() oder array() Funktionen benutzen, oder sie können explizit den Wert eines jeden Array-Elements festlegen.

 
$a[0] = "abc"; 
$a[1] = "def"; 
$b["foo"] = 13;
      

Sie können ein Array auch erzeugen, indem sie einfach Werte einem Array hinzu fügen. Wenn sie einer Array-Variablen einen Wert weisen, indem sie leere Klammern benutzen, wird der Wert am Ende des Arrays hinzugefügt.

 
$a[] = "hello"; // $a[2] == "hello"
$a[] = "world"; // $a[3] == "world" 
      

Arrays können durch Gebrauch der asort(), arsort(), ksort(), rsort(), sort(), uasort(), usort(), und uksort()-Funktionen sortiert werden (in Abhängigkeit von der gewünschten Sortierung).

Sie können die Anzahl der Elemente eines Arrays mittels der count()-Funktion ermitteln.

Durchlaufen können sie ein Array per next() und prev()-Funktion. Eine weiter Möglichkeit ist die Funktion each().

Mehrdimensionale Arrays

Mehrdimensionale Arrays sind einfach. Für jede Dimension des Arrays fügen sie einen anderen [key]-Wert ans Ende an:

 
$a[1]      = $f;               # Ein-Dimensionales Beispiel
$a["foo"]  = $f;   

$a[1][0]     = $f;             # Zwei-Dimensional
$a["foo"][2] = $f;             # (sie können numerische und
                                  assoziative Indizes so mischen)
$a[3]["bar"] = $f;             # (oder so)

$a["foo"][4]["bar"][0] = $f;   # Vier-Dimensional!
      

In PHP ist es nicht möglich, mehrdimensionale Arrays direkt in Strings zu referenzieren. Deshalb erzeugt auch das nachfolgende Beispiel nicht das gewünschte Ergebnis:

 
$a[3]['bar'] = 'Bob';
echo "Dies funktioniert nicht: $a[3][bar]";
      

In PHP wird das o.a. Beispiel folgendes ausgeben: Dies funktioniert nicht: Array[bar] . Jedoch kann der String-Verbindungs-Operator benutzt werden, dies zu umgehen:


$a[3]['bar'] = 'Bob';
echo "Das funktioniert: " . $a[3][bar];
      

In PHP4 kann das Problem umgangen werden, indem die Array-Referenz in geschweiften Klammern eingeschlossen wird:


$a[3]['bar'] = 'Bob';
echo "Das funktioniert in PHP4: {$a[3][bar]}";
      

Man kann multi-dimensionale Arrays auf viele Arten füllen, aber der trickreichste Weg geht über das Verständnis, wie der array()-Befehl für assoziative Arrays zu benutzen ist. Die folgenden Code-Schnippsel füllen das ein-dimensionale Array über den gleichen Weg:

 
# Example 1:

$a["color"]	= "red";
$a["taste"]	= "sweet";
$a["shape"]	= "round";
$a["name"]  	= "apple";
$a[3]		= 4;


# Example 2:
$a = array(
"color" => "red",
"taste" => "sweet",
"shape" => "round",
"name"  => "apple",
3       => 4
);
      

Die array()-Funktion kann eingefügt werden für mehrdimensionale Arrays:

 
<?php
$a = array(
    "apple"  => array(
        "color"  => "red",
        "taste"  => "sweet",
        "shape"  => "round"
    ),
    "orange"  => array(
        "color"  => "orange",
        "taste"  => "tart",
        "shape"  => "round"
    ),
    "banana"  => array(
        "color"  => "yellow",
        "taste"  => "paste-y",
        "shape"  => "banana-shaped"
    )
);
  
echo $a["apple"]["taste"];    # dies wird "sweet" ausgegeben
?>