PHP: Einführung für Anfänger


* Einführung * Installation * Paketmanager * Grundlagen * Shells * Entwicklung * KDE * Skriptsprachen * AWK * PHP * Perl * Apache * Veranstaltungen * Schulungen * Bücher * Netzwerk * OpenOffice * OpenSource * Samba

PHP


© <a href="http://www.fotolia.de/p/29003">Ljupco Smokovski</a> - FOTOLIA
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


Array als Kommode 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




© Copyright 2007 - 2010, Bernd Klein mit freundlicher Unterstützung von Bodenseo, Linux-Kurse und Schulungen,
Foto linke Seite (Mann mit Strick und Colt): Foto: © Ljupco Smokovski, fotolia 984022