PHP
Home
PHP von der Kommandozeile
PHP und HTML im Zusammenspiel
Variablen und Zuweisungen
Arrays
Vergleichsoperatoren
Verzweigungen
Schleifen
Funktionen
Datei schreiben
Datei lesen
Formulare verarbeiten
Sortieren von Dateinamen
Anzeige:
PHP Kurse für Anfänger und Fortgeschrittene
Kontakt
Haftung
Impressum
Problem Hilfe Startseite
|
Arrays
Einführung
Arrays bieten eine elegante Möglichkeit mehrere Variablen eines
Types untern einem Namen zu speichern.
Im Abschnitt über Variablen hatten wir die Variablen im Vergleich
mit einer Kommode eingeführt. Nun stellen wir uns vor, dass die
Kommode nicht mehr dem ganzen Speicher des Rechners, sondern nur einer
Sammlung von Variablen gleichen Typs entspricht. Die ganze Kommode
entspricht also genau einem Array und jede Schublade entspricht einem
Element dieses Arrays.
Wenn es nur eine Kommode in einer Wohnung gibt, ist es durchaus
sinnvoll unser Array (unsere Kommode) einfach nur "Kommode" zu nennen,
oder besser gesagt $Kommode, denn alle Variablen, also auch Arrays,
beginnen in PHP mit einem Dollarzeichen.
Den Inhalt einer Schublade, also z.B. der dritten Schublade,
sprechen wir nun mit $Kommode[3] an.
In allen Ausdrücken, in denen eine Variable des gleichen Typs
stehen kann, kann auch ein Element eines Arrays stehen.
Beispiele:
Nehmen wir an in $Kommode stehen Zahlen (z.B. integer):
if ($Kommode[3] ==3) {
$a = $b +7 - $Kommode[4];
}
Bei unserem Kommodenbeispiel haben wir mit 1 angefangen zu zählen,
weil dies mehr unserer natürlichen Vorstellung entspricht. Wir
sprechen von der "1. Schublade" oder der "3. Schublade". Allerdings
beginnen Arrays meistens mit 0. Daran muss man sich gewöhnen, wenn
man noch nie programmiert hat. Informatiker beginnen halt mit 0 zu
zählen, also 0, 1, 2, usw.
Man kann sich ein Array auch als zweispaltige Tabelle vorstellen.
Stellen wir uns beispielsweise ein Array vor, dass die Wochentage (also
Strings) enthält:
Index (oder key)
|
Wert (oder value)
|
0
|
Montag
|
1
|
Dienstag
|
2
|
Mittwoch
|
3
|
Donnerstag
|
4
|
Freitag
|
5
|
Samstag
|
6
|
Sonntag
|
Obige Tabelle wollen wir nun einem Array mit dem Namen $Woche zuordnen:
$Woche = array ("Montag",
"Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag", "Sonntag");
|
Die Anweisung echo $woche[0]; gibt den String "Montag" aus.
Die Zuweisung der Wochentage zum Array hätte man auch wie folgt
machen können:
$Woche[0] = "Montag";
$Woche[1] = "Dienstag";
$Woche[2] = "Mittwoch";
$Woche[3] = "Donnerstag";
$Woche[4] = "Freitag";
$Woche[5] = "Samstag";
$Woche[6] = "Sonntag";
|
Eine wichtige Funktion, die man bei der Behandlung von Arrays
häufig braucht, ist count().
Will man alle Array-Elemente ausgeben, kann man dies mit einer for-Schleife machen:
for ($i = 0; $i <
count($Woche); $i++) {
echo "$Woche[$i]\n";
}
|
Assoziative Arrays
In den bisherigen Beispielen hatten wir als Indizes nur ganze Zahlen
verwendet. Was, wenn der Index selbst z.B. ein String ist, wie zum
Beispiel in folgender Tabelle, in der einem jeweiligen englischen
Wochentag sein deutsches Äquivalent gegenübersteht:
Index (oder key)
|
Wert (oder value)
|
Monday
|
Montag
|
Tuesday |
Dienstag
|
Wednesday
|
Mittwoch
|
Thursday
|
Donnerstag
|
Friday
|
Freitag
|
Saturday
|
Samstag
|
Sunday
|
Sonntag
|
Auch dies lässt sich in PHP leicht realisieren, im Gegensatz zu
einer Programmiersprache wie C oder C++. In PHP sind zu diesem Zweck
sogenannte assoziative Arrays (manchmal auch Hashs genannt)
implementiert.
Folgende Zeile erledigt obige Zuordnung der Wochentage:
$ED_Woche
= array ("Monday"=>"Montag",
"Tuesday"=>"Dienstag", "Wednesday"=>"Mittwoch",
"Thursday"=>"Donnerstag", "Friday"=>"Freitag",
"Saturday"=>"Samstag", "Sunday"=>"Sonntag");
|
Ein solches assoziatives Array lässt sich aber nicht mehr mit
einer einfachen Zählschleife, wie der for-Schleife, ausgeben. Dazu
bietet PHP das foreach-Konstrukt:
foreach ($ED_Woche as $en
=> $de) {
echo "$en - $de\n";
}
|
Man kann auch mehrdimensionale assoziative Arrays (multidimensional
associative arrays) bilden, wenn man als
Elemente jeweils wieder assoziative Arrays wählt.
Beispiel: Mitarbeiter einer Firma:
Herbert
Meyer
|
Telefon
|
23546
|
Abteilung
|
K12
|
Eintrittsjahr
|
1997
|
Marja
McCoy
|
Telefon
|
23634
|
Abteilung
|
E34
|
Eintrittsjahr
|
2002
|
Swen
Fidelity
|
Telefon
|
23301
|
Abteilung
|
K07
|
Eintrittsjahr
|
1990
|
Ein lauffähiges PHP-Programm, welches obige Tabelle als
multidimensionales assoziatives Array implementiert, findet man im
nächsten Diagramm:
<?
$Firma = array (
"Meyer"=>array("Telefon"=>"23546", "Abteilung"=>"K12",
"Beitritt"=>1997),
"McCoy"=>array("Telefon"=>"23634", "Abteilung"=>"E34",
"Beitritt"=>2002),
"Fidelity"=>array("Telefon"=>"23422","Abteilung"=>"K07",
"Beitritt"=>1990)
);
foreach ($Firma as $name=>$data) {
echo "$name:\n";
foreach ($data as $key=>$num) {
echo " - $key $num\n";
}
}
?>
|
Wenn man obiges Skript in einer Datei multi_array.php speichert und mit
"php5 multi_array.php" in einer
Shell von Kommandozeile startet, sollte man folgende Ausgabe
erhalten:
Meyer:
- Telefon 23546
- Abteilung K12
- Beitritt 1997
McCoy:
- Telefon 23634
- Abteilung E34
- Beitritt 2002
Fidelity:
- Telefon 23422
- Abteilung K07
- Beitritt 1990
|
|