Ein Array ist ein Datentyp, in dem beliebig viele Werte abgespeichert werden können. Während eine Variable eines elementaren Datentyps immer nur einen einzelnen Wert enthält, kann eine Arrayvariable eine größere Anzahl verschiedenster Werte enthalten.
Die Elemente eines Arrays können Werte wie Zahlen, Strings, boolesche Werte, aber auch andere Arrays, Objekte oder Funktionen sein.
PHP unterscheidet dabei zwischen:
Ein indiziertes Array wird mit dem Index angesprochen.
Der Index entsteht automatisch bei der Initialisierung. Der Index beginnt bei Null (0), kann aber auch selbst definiert werden.
Von assoziativen Arrays oder Hashes spricht man, wenn die Elemente im Array nicht über Indizes, sondern über Strings bzw. Schlüssel angesprochen werden.
Indizierte Arrays
Indizierte Arrays verwenden Ganzzahlen als Schlüssel, die PHP vergibt. Die Syntax ist ähnlich der JavaScript-Schreibweise,
anhand der eckigen Klammern erkennt PHP, dass es sich um ein Array handelt.
<?php
$color[] = "FF0000";
$color[] = "00FF00";
$color[] = "000000";
echo $color[0]; // liefert FF0000
?>
Der Index eines Arrays kann in PHP auch selbst definiert werden.
<?php
$color[2] = "FF0000";
$color[5] = "00FF00";
$color[9] = "000000";
echo $color[0]; // liefert Fehlermeldung
?>
Die Array Funktion
PHP stellt auch eine Funktion für die initialisierung von Arrays zur Verfügung. Die Funktionsparameter sind dabei die Array-Eintrgäge,
den Index vergibt PHP selbstständig.
<?php
$color = array("FF0000", "00FF00", "000000");
echo $color[0]; // liefert FF0000
?>
Sie wollen einem Array mehrere Elemente auf einmal zuweisen, hierbei soll jedoch der erste Index nicht 0 sein. Bringen Sie array() dazu, einen anderen Index zu verwenden,
indem Sie die Syntax mit dem Operator => verwenden. Im Beispiel bekommt der erste Array-Eintrag den Index 1, weitere Einträge passen sich
automatisch an.
<?php
$color = array(1 => "FF0000", "00FF00", "000000");
echo $color[3]; // liefert 000000
?>
Sogar ein Konstrukt wie das folgende Beispiel ist möglich!
<?php
$color = array(1 => "FF0000", "00FF00", 12 =>"0000FF", "000000");
echo $color[13]; // liefert 000000
?>
Indiziertes Array in einer for-Schleife ausgeben
Die count-Funktion ermittelt die Anzahl der Array-Einträge.
<?php
$person = array("Adi", "Prinz", 60);
$arrlength = count($person);
for($x = 0; $x < $arrlength; $x++) {
echo $person[$x];
echo "<br>";
}
?>
Assoziative Arrays
Schlüsselnamen müssen nicht numerisch sein. Sie können einen beliebigen Wert annehmen, etwa eine Zeichenkette, die Assoziationen zum Schlüssel erzeugt. Diese Assoziationen heißen HASHES.
<?php
$color["red"] = "FF0000";
$color["green"] = "00FF00";
$color["blue"] = "0000FF";
$color["black"] = "000000";
echo $color["blue"]; // liefert 0000FF
?>
Ein assoziatives Array lässt sich natürlich auch mithilfe der array()-Funktion erzeugen. Dabei kommt wieder der Operator => zum Einsatz.
<?php
$color = array("red" => "FF0000", "green" => "00FF00", "blue" => "0000FF", "black" => "000000");
echo $color["blue"]; // liefert 0000FF
?>
Assoziatives Array in einer foreach-Schleife ausgeben
<?php
$person = array("vorname" => "Adi", "nachname" => "Prinz", "age" => 60);
foreach($person as $x => $x_value) {
echo "Key = " . $x . ", Value = " . $x_value;
echo "<br>";
}
?>
Mehrdimensionale Arrays
Die Elemente eines Arrays können nicht nur Werte einfacher Datentypen (Zahlen, Strings, boolesche Werte), sondern auch Objekte oder andere Arrays sein.
Letzteres eröffnet einige interessante Möglichkeiten.
<?php
// indiziert
$kunden = array(
array("Adi","Prinz"),
array("Gabi","Müller"),
array("Harald","Maier")
);
echo $kunden[0][1]; // liefert Prinz
// indiziert & assoziativ
echo "<br>";
$firma = array(
"chef" => array("Adi","Prinz"),
"chefin" => array("Gabi","Müller")
);
echo $firma["chefin"][1]; // liefert Müller
// assoziativ
echo "<br>";
$firma = array(
"chef" => array("vorname" => "Adi", "nachname" => "Prinz"),
"chefin" => array("vorname" => "Gabi", "nachname" => "Müller")
);
echo $firma["chefin"]["vorname"]; // liefert Gabi
?>
Arrays in lesbarer Form ausgeben
Für Testzwecke ist es oftmals notwendig, alle Array-Einträge in lesbarer Form auszugeben. PHP bietet dafür u.A. zwei Funktionen an, idealerweise im pre-Element von HTML.
<?php
$firma = array(
"chef" => array("Adi","Prinz"),
"chefin" => array("Gabi","Müller")
);
echo "<pre>";
print_r($firma);
echo "<br>";
var_dump($firma);
echo "</pre>";
?>
Array Löschen
Die Zuweisung einer leere Zeichenkette löscht zwar sämtliche Einträge des Arrays, das Array selbst existiert jedoch immer noch.
<?php
$firma = array(
"chef" => array("Adi","Prinz"),
"chefin" => array("Gabi","Müller")
);
$firma = array();
?>
Um ein Array völlig zu löschen, verwenden Sie unset().
<?php
$firma = array(
"chef" => array("Adi","Prinz"),
"chefin" => array("Gabi","Müller")
);
unset($firma);
?>
Array Funktionen
Hier ist ein kleiner Auszug der Array Funktionen von PHP:
- array_unshift() / Array-Elemente anfügen
- sort() / sortiert ein Array
- ksort() / sortiert ein Array
- list() / Elemente als Variablen
- count() / Elemente Anzahl
array_unshift()
Fügt ein oder mehr Elemente am Anfang eines Arrays ein. Der erste Parameter der Funktion definiert die Array-Variable, weitere Parameter
definierne die neuen Elemente.
<?php
$x = array("red", "green");
array_unshift($x, "blue", "yellow");
print $x[0]; // liefert blue
?>
sort()
Sortiert ein indiziertes Array nach einem optionalen Sortiertyp im zweiten Parameter. Achtung, alle vorher definierten Indizien gehen verloren.
<?php
$x = array("red", "green", "blue", "black");
sort($x, SORT_STRING);
print $x[0]; // liefert blue
?>
ksort()
Sortiert ein assoziatives Array nach Schlüsseln und einem optionalen Sortiertyp im zweiten Parameter.
<?php
$x = array("red" => "FF0000", "green" => "00FF00", "blue" => "0000FF", "black" => "000000");
ksort($x, SORT_STRING);
echo "<pre>";
foreach ($x as $key => $val) {
echo "$key = $val\n";
}
echo "</pre>";
?>
list()
Weist Variablen zu, als wären sie ein Array. Die Parameter in der list()-Funktion übernehmen die Werte des Arrays $x.
<?php
$x = array('Adi', 'Prinz', 'Bad Hofgastein');
list($firstName, $lastName, $homeTown) = $x;
echo $homeTown; // liefert Bad Hofgastein
?>
count()
Liefert die Anzahl der Elemente eines Arrays.
<?php
$x = array('Adi', 'Prinz', 'Bad Hofgastein');
echo count($x); // liefert 3
?>
Array Funktions-Referenz
Eine Liste der Array Funktionen finden sie hier:
php.net
w3schools.com