Homepage-Webhilfe Event-Banner

Arrays

Ein Array in PHP stellt eine sogenannte „geordnete Map“ dar. Arrays stellen dabei einen speziellen Datentyp bzw. eine Datenstruktur dar, in welcher mehrere Werte abgelegt werden können. Zu jedem Wert (engl. value) gibt es einen sogenannten Schlüssel (engl. key). Mit diesem Schlüssel ist es möglich, auf die einzelnen Elemente zuzugreifen. Man spricht hier auch von einem assoziativen Array. Standardmäßig handelt es sich bei Arrays um indizierte Arrays. Hierbei werden als Schlüssel nummerische Werte verwendet. Das erste sogenannte Element eines Arrays besitzt dabei den Schlüssel 0, das zweite Element den Schlüssel 1, das dritte Element den Schlüssel 2 usw.. PHP unterscheidet bei der Verwendung von Arrays nicht zwischen assoziativen und indizierten Arrays. Wird jedoch kein Schlüssel durch den Programmierer explizit angegeben, so werden die Schlüssel für die einzelnen Elemente automatisch vergeben. Diese Vergabe erfolgt so wie eben bei einem indizierten Array.

Die Definierung eines indizierten Arrays erfolgt mittels des Schlüsselworts array(). Innerhalb der runden Klammern können nun die Werte für das Array angegeben werden. Dabei kann es sich um eine Zeichenkette, eine Nummer oder einen anderen Datentyp handeln. Mehrere Werte werden wie bei Funktions-Parametern durch Komma getrennt. Natürlich ist es auch möglich, innerhalb eines Arrays Elemente von unterschiedlichen Datentypen zu speichern.

<?php
$meinArray = array('A', 'B', 'C');
?>

Um auf Elemente des Arrays zuzugreifen, benötigen wir die eckigen Klammern. Wollen wir z. B. auf den Wert des zweiten Elements eines Arrays zugreifen, so notieren wir den Array-Namen gefolgt von der öffnenden eckigen Klammer, der Zahl 1 und der schließenden eckigen Klammer. Die Zahl 1 stellt hierbei den Schlüssel (bei indizierten Arrays) des Elements dar. Bei assoziativen Arrays wird zwischen den eckigen Klammern der vergebene Schlüssel angegeben.

<?php
echo $meinArray[1]; # Gibt 'B' aus (siehe oben)
?>

Um die Länge eines Arrays zu bestimmen, können wir die Funktion count() verwenden, welcher als Parameter das Array übergeben wird.

Während der Entwicklungszeit ist es oft praktisch, wenn man sich die Elemente eines Arrays (sowohl Schlüssel als auch Werte) anschauen kann. Hierfür können wir die Funktion print_r() nutzen. Dieser wird als Parameter das Array übergeben. Da die Funktion einen präformierten Text ausgibt, sollten wir die Ausgabe (sofern diese auf einer HTML-Seite verwendet wird) innerhalb der pre-Tags von HTML platzieren.

Hier nun das erste Beispiel zum Thema Arrays:

<?php
$liste = array('HTML', 'CSS', 'JavaScript', 'ActionScript', 'PHP');

echo 'Erstes Element: '.$liste[0].'<br />';
echo 'Letztes Element: '.$liste[count($liste) - 1].'<br />';

echo '<pre>';
print_r($liste);
echo '</pre>';
?>
Vorschau

Übrigens: Seit der PHP-Version 5.4 ist auch eine verkürzte Schreibweise für die Array-Deklaration möglich. Dies sieht dann z. B. wie folgt aus:

<?php
$meinArray = ['A', 'B', 'C'];
?>

Übrigens: Natürlich können Sie auch ein leeres Array deklarieren und dieses später mit Werten füllen:

<?php
$meinArray = array();
?>

Um ein Array zur Laufzeit zu verändern, stehen uns die Funktionen array_push(), array_unshift(), array_pop() und array_shift() zur Verfügung.

Die Funktionen array_push() und array_unshift() werden dazu verwendet, dem Array ein Element anzufügen. Dabei fügt die Funktion array_push() das Element am Ende an, die Funktion array_unshift() hingegen am Anfang. Beiden Funktionen wird als erster Parameter das Array übergeben und als zweiter Parameter das hinzuzufügende Element. Optional können den Funktionen auch mehrere Werte (durch Kommas getrennt) übergeben werden. Als Rückgabewert geben beide Funktionen die neue Länge des Arrays zurück.

Die Funktion array_pop() und array_shift() werden dazu verwendet, Elemente aus einem Array zu entfernen. Dabei entfernt die Funktion array_pop() das letzte Element und die Funktion array_shift() das erste. Als Parameter wird lediglich das Array übergeben. Beide Funktionen geben den Wert des entfernten Elements zurück.

<?php
$liste = array('CSS', 'JavaScript', 'ActionScript');

array_unshift($liste, 'HTML');
array_push($liste, 'PHP');

echo '<pre>';
print_r($liste);
echo '</pre>';
?>
Vorschau

Wichtig: Bei Verwendung der Funktionen array_unshift() und array_shift() werden alle nummerischen Schlüssel automatisch angepasst, sodass die Zählung wieder bei 0 beginnt. Array-Elemente, bei welchem der Schlüssel vom Datentyp String ist, werden bei der automatischen Schlüsselanpassung übersprungen.


Bei einem assoziativen Array, wie bereits weiter oben angesprochen, können die einzelnen Elemente einen individuellen Schlüssel besitzen. Dieser Schlüssel kann vom Datentyp String oder integer (wie bei indizierten Arrays) sein. Bei der Deklaration eines Arrays kann nun zusätzlich zum Wert des Elements ein Schlüssel angegeben werden. Das Schema sieht hierbei wie folgt aus: Schlüssel => Wert.

<?php
$liste = array(
	'a' => 12,
	'b' => 34,
	'c' => 56,
	'd' => 78
);

echo '<pre>';
print_r($liste);
echo '</pre>';
?>
Vorschau

Übrigens: Beim Zugriff auf die einzelnen Elemente wird ebenfalls das eckige Klammernpaar verwendet. Zwischen den Klammern wird hier nun nicht der sogenannte Index, sondern der Schlüssel notiert.

<?php
echo $liste['a']; # Gibt 12 aus (siehe oben)
?>

Wichtig: Für assoziative Arrays sollten Sie die Funktionen array_push(), array_unshift(), array_pop() und array_shift() vermeiden. Um Elemente hinzuzufügen, verwenden Sie den Syntax $meinArray[$meinNeuerKey] = $meinNeuerWert;. Das Entfernen eines bestimmten Elements mittels des Schlüssels ist mit der Funktion unset() möglich. unset() ist eine allgemeine Funktion von PHP, um Variablen zur Laufzeit zu löschen. Um zu prüfen, ob eine Variable existiert, können wir die Funktion isset() verwenden. Beiden Funktionen wird als einzigster Parameter die zu löschende oder überprüfende Variable (oder eben das zu löschende oder zu überprüfende Element eines Arrays) übergeben. Die Funktion isset() werden wir noch im Laufe dieses PHP-Kurses benötigen. Hier noch ein kurzes Beispiel zur Veränderung von assoziativen Arrays:

<?php
$liste['e'] = 90;   # Fügt ein Element mit dem Schlüssel e und dem Wert 90 hinzu (siehe oben)
unset($liste['b']); # Löscht das Element mit dem Schlüssel b und dem Wert 34 (siehe oben)
?>

Array-Dimensions-Grafik Ein mehrdimensionales Array besitzt, wie der Name bereits vermuten lässt, mehrere Dimensionen. Bisher hatten wir nur Arrays mit einer Dimension. Vorstellen kann man sich ein solches eindimensionales Array als Schrank mit mehreren Schubladen. Ein zweidimensionales Array, also ein Array mit zwei Dimensionen, kann man sich mit an Hand einer Tabelle relativ einfach vorstellen: Es gibt Zeilen (erste Dimension) und es gibt Spalten (zweite Dimension). Die Vorstellung eines Arrays mit drei Dimensionen kann man sich z. B. mit einem Zauberwürfel (Rubik‘s Cube) veranschaulichen. Dort gibt es (beim Klassischen Zauberwürfel) drei Felder in der Breite (X-Achse), drei in der Höhe (Y-Achse) und drei in der Tiefe (Z-Achse). Programmiertechnisch sind auch Arrays mit vier oder mehr Dimensionen möglich. Die Vorstellung solcher Arrays ist jedoch wesentlich komplizierter und wird auch kaum gebraucht. Mehrdimensionale Arrays müssen nicht besonders deklariert werden. Der Unterschied zu „normalen“ Arrays ist lediglich, dass ein Array als Wert ein weiteres Array usw. enthält. Auch mehrdimensionale assoziative Arrays sind möglich. Das folgende Beispiel zeigt ein indiziertes Array mit drei Dimensionen.

<?php
$liste = array(
	array(
		array('Q', 'W', 'E', 'R', 'T'),
		array('Z', 'U', 'I', 'O', 'P'),
		array('Ü')
	),
	array(
		array('A', 'S', 'D', 'F', 'G'),
		array('H', 'J', 'K', 'L', 'Ö'),
		array('Ä')
	),
	array(
		array('Y', 'X', 'C', 'V', 'B'),
		array('N', 'M')
	)
);

echo '<pre>';
print_r($liste);
echo '</pre>';
?>
Vorschau

Mit der Funktion array_search() ist es möglich, ein Array nach einem Wert zu durchsuchen. Hierfür wird der Funktion der zu suchende Wert (needle) und das zu durchsuchende Array (haystack) angegeben. Als Rückgabewert gibt array_search() den Schlüssel des gefundenen Elements zurück. Bleibt die Suche erfolglos, so wird false zurückgegeben.

<?php
$liste = array('HTML', 'CSS', 'JavaScript', 'ActionScript', 'PHP');

echo 'Key von "JavaScript": '.array_search('JavaScript', $liste);
?>
Vorschau

Zur Sortierung von Arrays gibt es insgesamt 6 verschiedene Funktionen: sort(), rsort(), ksort(), krsort(), asort() und arsort(). Die Funktionen sort(), ksort() und asort() führen eine aufsteigende Sortierung durch, wohingegen die Funktionen rsort(), krsort() und arsort() eine absteigende Sortierung durchführen. Alle Sortierungsfunktionen verändern dabei das übergebene Array.

Die Funktionen sort() und rsort() sortieren das Array nach den Werten. Dabei gehen die evtl. manuell zugewiesenen Schlüssel verloren. Für ein einfaches indiziertes Array sind diese beide Funktionen die geläufigsten.

Die Funktionen ksort() und krsort() sortieren das Array nach den Schlüsseln. Benötigt werden diese Sortierungsfunktionen fast ausschließlich bei assoziativen Arrays.

Die Funktionen asort() und arsort() sind mit sort() und rsort() zu vergleichen. Der Unterschied liegt jedoch darin, dass die Schlüsselzuordnung nicht verloren geht. Verwendet werden diese Funktionen ebenfalls zumeist nur bei assoziativen Arrays.

Das folgende Beispiel zeigt die Verwendung und Auswirkung der Funktionen sort() und rsort().

<?php
$liste = array('HTML', 'CSS', 'JavaScript', 'ActionScript', 'PHP');

sort($liste);

echo '<pre>';
print_r($liste);
echo '</pre>';

rsort($liste);

echo '<pre>';
print_r($liste);
echo '</pre>';
?>
Vorschau

Um eine Zeichenkette an einem bestimmten Zeichen oder einer bestimmten Zeichenfolge zu trennen, gibt es die Funktion explode(). Der Funktion wird als erster Parameter das Trennzeichen (bzw. die Trennzeichen-Zeichenfolge) und als zweiter Parameter die zu zerteilende Zeichenkette übergeben. Als Rückgabewert erhalten Sie von der Funktion explode() ein indiziertes Array, welches die Teile der Zeichenkette repräsentiert. Optional kann der Funktion explode() ein dritter Parameter übergeben werden, welcher die maximale Anzahl an Array-Elementen (limit) angibt. Wird diese Grenze überschritten, enthält das letzte Array-Element den Rest der Zeichenkette.

Für die andere Richtung, also um ein Array in eine Zeichenkette umzuwandeln, gibt es die Funktion implode(). Dieser werden als Parameter das Zeichen mit welchem die Elemente verbunden werden sollen (glue) und das Array übergeben. Als Rückgabewert erhalten Sie von dieser Funktion eine Zeichenkette (Datentyp String).

<?php
$liste = array('HTML', 'CSS', 'JavaScript', 'ActionScript', 'PHP');

echo '<pre>';
print_r($liste);
echo '</pre>';

$string = implode(', ', $liste);

echo $string.'<br />';

$neueListe = explode(', ', $string);

echo '<pre>';
print_r($neueListe);
echo '</pre>';
?>
Vorschau
Um unsere Webseite für Sie optimal zu gestalten und fortlaufend verbessern zu können, verwenden wir Cookies. Durch die weitere Nutzung der Webseite stimmen Sie der Verwendung von Cookies zu. Weitere Informationen OK