Arrays
Arrays ermöglichen das Speichern von logisch zusammengehörenden Daten. In diesem Kapitel lernen Sie, Arrays zu erstellen, dessen Elemente auszulesen und zu verändern.
// Schnelles Code-Beispiel:
$meinArray = array(2,4,6,8);
echo $meinArray[0]; // 2
echo $meinArray[1]; // 4
echo $meinArray[2]; // 6
echo $meinArray[3]; // 8
Arrays, auch "Felder" genannt, ermöglichen das Speichern von „logisch zusammengehörende Daten“. Was soll das heißen?
Damit ist gemeint, dass wir Arrays immer dann verwenden sollten, wenn wir mit Daten arbeiten, die einen natürlichen Bezug zueinander haben. So gehören etwa die 6 Lottozahlen oder auch eine Liste mit Preisen eng zusammen und wir sollten diese Werte in einem Array für Lottozahlen bzw. einem Array für Preise speichern.
Wie wir dann auf diese Werte zugreifen, hängt vom Typ des Arrays ab, den wir festlegen. PHP untersützt zwei verschiedene Array-Typen. Lassen Sie sich bloß nicht von den Bezeichnung für diese beiden Array-Typen abschrecken. Sie sind in Wirklichkeit ganz unkompliziert:
Wir werden uns nun nacheinander beide Array-Typen genau ansehen.
Greifen wir das Beispiel mit den Lottozahlen einmal konkret auf und erstellen ein Array mit 6 Integer-Werten:
$lottozahlen = array(2,8,10,22,29,40);
Die einzelnen Werte, die das Array speichern soll, werden mittels der Funktion array() übergeben und stehen dabei als Parameter kommasepariert in Klammern. Das so erstellte Array speichern wir dann in der Variablen $lottozahlen.
Unser Lottozahlen-Array $lottozahlen ist ein "numerisch indiziertes" Array ist. Das ist die Standard-Version für Arrays. "Numerisch indiziert" bedeutet, dass jedes Element in einem Array eine ganz bestimmte Nummer in eben diesem Array zugewiesen bekommt. Diese Nummer nennen wir Index.
Der Index ist so etwas wie die eindeutige „Adresse“ eines Elements in seinem Array. Wir können somit einzelne Elemente eines Arrays gezielt abrufen. Die Index-Nummerierung erfolgt dabei immer aufsteigend und zwar beginnend bei dem Index 0. Somit hat das erste Element eines Arrays immer den Index 0 und das letzte den Index [Array-Größe n] MINUS 1.
Ein Array ist somit nichts anderes als ein Speicherblock, der verschiedene Elemente “in sich“ positionieren kann. Jede Position im Array ist nur einmal zu vergeben. Das Schaubild verdeutlich diesen Aspekt:
Auf unser Lottozahlen-Array übertragen, können wir nun folgende Feststellungen machen:
Wie lesen wir einzelne Elemente eines Arrays aus oder - mit anderen Worten - wie picken wir ein Element aus dem Array heraus?
Um einzelne Elemente eines Arrays auszulesen, schreiben wir den entsprechenden Index in eckigen Klammern hinter den Arraynamen. Die folgende Tabelle gibt uns eine Übersicht über die Index-Positionen und Elemente für das Array $lottozahlen:
| Index | Zugriff | Element |
|---|---|---|
| 0 | $lottozahlen[0] | 2 |
| 1 | $lottozahlen[1] | 8 |
| 2 | $lottozahlen[2] | 10 |
| 3 | $lottozahlen[3] | 22 |
| 4 | $lottozahlen[4] | 29 |
| 5 | $lottozahlen[5] | 40 |
Im praktischen Einsatz sieht das so aus:
echo $lottozahlen[0];
echo $lottozahlen[1];
echo $lottozahlen[5];
Wir geben hier drei Lottozahlen am Bildschirm aus, indem wir zunächst die Variable nennen, die das Array trägt. Direkt daneben schreiben wir in eckigen Klammern die Index-Nummer des Elements, das wir haben wollen. Im obigen Beispiel erhalten wir so die Lottozahlen 2 8 und 40 (nämlich das erste, zweite und letzte Element.
Da wir wissen, wie wir Elemente eines Arrays rauspicken, können wir sie auch mit neuen Elementen überschreiben bzw. die Index-Position neu besetzen. Lassen Sie uns ein wenig an den Lottozahlen schrauben und die dritte Zahl, das ist die auf Index-Position 2, verändern, sodass der alte Wert 10 durch einen neuen Wert, sagen wir einfach mal... 33 ersetzt wird:
echo "Lottozahl auf Index-Position 2: ";
echo $lottozahlen[2] . "";
$lottozahlen[2] = 33; //Neuzuweisung Indexposition 2
echo "Neue Zahl auf Index-Position 2: ";
echo $lottozahlen[2];
Lottozahl auf Index-Position 2:
10
Neue Zahl auf Index-Position 2:
33
Wir können in PHP einem Array weitere Elemente hinzufügen, indem wir hinter der letzten Index-Position einfach einen neuen Index mit neuem Element platzieren.
Die Syntax ist nach folgendem Muster anzuwenden:
$array[NeueLetzteIndexPosition] = WERT;
Für unser Lottozahlen-Beispiel sieht das so aussehen:
$lottozahlen[6] = 9;
Das Array hätte nun 7 Indices.
Der wesentliche Unterschied zwischen einem numerisch-indizierten Array und einem assoziativen Array liegt darin, wie wir die einzelnen Array-Elemente ansteuern.
Während die Elemente eines numerisch-indizierten Arrays über eine fortlaufende Index-Numerierung angeordnet sind, werden die Elemente (values) eines assoziativen Arrays über keys (=Schlüsselbegriffe) zugeordnet.
Dieses Prinzip wird auch hash-table genannt und ermöglicht es uns, den einzelnen Array-Elementen eindeutigen Begriffe zuzuordnen.
Erstellen wir testweise ein assoziatives Array zu einer Preisliste für diverse Produkte:
//Assoziatives Array erstellen
$preise = array("Kirschen" => 2.99,
"Erdbeeren"=>3.49,
"Trauben"=>1.50,
"Orangen" => 4.19);
Wir müssen bei einem assoziativem Array jedem Schlüssel (key) mit dem Operator => einen Wert (value) direkt zuweisen.
Dies geschieht wie schon beim numerisch-indizierten Array mithilfe der Funktion array(), nur dass wir diesmal in die runden Klammern nacheinander key (Schlüssel) und dazugehörigen Value (Wert) schreiben.
Jeder key muss als String zwischen doppelten Anführungszeichen " " stehen. Zwischen den einzelnen key-value-Paaren steht zur Trennung immer ein Komma.
Erinnern Sie sich? Bei einem numerisch-indizierten Array haben wir zum Auslesen eines Elements die Index-Nummer im Array benötigt. In einem assoziativen Array benötigen wir nun den Schlüssel/ key. Das Prinzip ist bei beiden Array-Typen gleich:
// Wieviel Euro kosten Kirschen?
echo $preise["Kirschen"];
// Wieviel Euro kosten Erdbeeren?
echo $preise["Erdbeeren"];
// und so weiter...
Angenommen der Preis für Kirschen ändern sich von 2.99 auf 3.10. Dann schreiben wir:
$preise["Kirschen"] = 3.10;
Und wenn ein neues Obst (also Array-Element) hinzugefügt werden soll, ist das ähnlich einfach:
$preise["AnanasDeluxe"] = 6.99;
Wir haben nun durch das Hinzufügen der AnanasDeluxe insgesamt 5 Elemente in unserem Array, d.h. 5 key-value-Paare. Bei einem Wert von 6.99 hoffen wir doch sehr, dass das Teil auch schmeckt! ;)
Zur einfacheren Übersicht auch hier eine entsprechende Tabelle für das assoziative Array:
| Name des Elements | key | value |
|---|---|---|
| $preise["Kirschen"] | "Kirschen" | 2.99 |
| $preise["Erdbeeren"] | "Erdbeeren" | 3.49 |
| $preise["Trauben"] | "Trauben" | 1.50 |
| $preise["Orangen"] | "Orangen" | 4.19 |
| $preise["AnanasDeluxe"] | "AnanasDeluxe" | 6.99 |
Bisher haben wir nur mit eindimensionale Arrays gearbeitet. Für komplexere Datenstrukturen genügt das aber oftmals nicht. Wir werden es dann mit multidimensionalen Arrays zu tun bekommen.
Da vor allem zweidimensionale Arrays recht häufig vorkommen, schauen wir uns diese jetzt mal genauer an.
Stellen Sie sich ein zweidimensionales Array als eine Art Gitter mit Koordinaten vor:
Wie man sieht, besteht ein zweidimensionales Array aus einer Reihe von untergeordneten Einzelarrays ("Subarrays"). Diese wiederum halten jeweils einzelne Elemente.
Erstellen wir nun mit PHP ein zweidimensionales Array für int-Werte:
//Zweidimensionales Array erstellen:
$array2D = array(array(2,4,1,34),
array(9,10,14)
);
Wir haben nun zwei Subarrays innerhalb des übergeordneten Hauptarrays namens $array2D.
Das erste Subarray hat die int-Wert 2, 4, 1, 34 und das zweite Subarray hat die int-Werte 9, 10, 14
Subarrays haben keine Namen, wir können sie aber einfach über $array2D[0] bzw. $array2D[1] ansteuern.
Um die einzelnen Elemente der jeweiligen Subarrays auszuwählen, setzen wir hinter den Namen der Array-Variable $array2D zwei eckige Klammern. in diese tragen wir ein:
In einem konkreten Beispiel sieht das dann so aus:
echo "Elemente des 2. Subarrays: <br>";
echo $array2D[0][0] . "<br>";
echo $array2D[0][1] . "<br>";
echo $array2D[0][2] . "<br>";
echo $array2D[0][3] . "<br>";
echo "Elemente des 2. Subarrays: <br>";
echo $array2D[1][0] . "<br>";
echo $array2D[1][1] . "<br>";
echo $array2D[1][2] . "<br>";
Wir erhalten am Bildschirm angezeigt:
Elemente des 1. Subarrays:
2
4
1
34
Elemente des 2. Subarrays:
9
10
14
Java Basics
[Java einrichten] [Variablen] [Primitive Datentypen] [Operatoren] [if else] [switch-case] [Arrays] [Schleifen]
Objektorientierung
[Einstieg] [Variablen ] [Konstruktor] [Methoden] [Rekursion] [Statische Member] [Initializer] [Pass-by-value] [Objektsammlungen] [Objektinteraktion] [Objekte löschen]
Klassenbibliothek
[Allgemeines] [String ] [Math] [Wrapper] [Scanner] [java.util.Arrays] [Date-Time-API]
Vererbung
[Einstieg Vererbung] [Konstruktoren bei Vererbung ] [Der protected Zugriffsmodifikator] [Abstrakte Klassen und Methoden] [Polymorphie in Java] [Typumwandlung] [Die Klasse Object] [Die toString()-Methode] [Objekte vergleichen] [Was ist ein Interface?]