SmileMan's Blogger

19Nov/110

Arrays

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

 

EasyFreeAds Blog News Facebook Twitter Myspace Friendfeed Technorati del.icio.us Digg Google Yahoo Buzz StumbleUpon

hat dir dieser Artikel gefallen?

Dann abonniere doch diesen Blog per RSS Feed!

veröffentlicht unter: PHP Kommentar schreiben
Kommentare (0) Trackbacks (0)

Zu diesem Artikel wurden noch keine Kommentare geschrieben.


Leave a comment

Noch keine Trackbacks.