Hauptmenü

Untermenü

PHP - Grundlagen - Arrays - Arraytypen

1. Eindimensionale Arrays

Im ersten Teil haben wir schon ein Beispiel für ein eindimensionales Array kennen gelernt. Zum besseren Verständnis setzen wir diesmal einen numerischen Index und geben die Inhalte aus. Die alternative Schreibweise habe ich ja schon gezeigt.


<?php
  $name[0] = 'Claudia Mustermann';
  $name[1] = 'Dieter Hinz';
  $name[2] = 'Peter Kunz';

  echo $name[0].'<br>';
  echo $name[1].'<br>';
  echo $name[2].'<br>';
?>

Was aber, wenn wir weitere Informationen abspeichern wollen, wie zum Beispiel die Mail-Adresse? Ein zweites Array anlegen und darin die E-Mails abspeichern? Wohl kaum, dann haben wir bald ein ähnliches Variablen-Chaos, wie im vorherigen Abschnitt beschrieben.

2. Mehrdimensionale Arrays

Wollen wir nun zum Namen auch noch die Mail-Adresse abspeichern, so erweitern wir das Array um eine zusätzliche Ebene.


<?php
  $name[0][0] = 'Claudia Mustermann';
  $name[0][1] = 'info@mustermann.de';

  $name[1][0] = 'Dieter Hinz';
  $name[1][1] = 'dieter.hinz@wasweissich.de';

  $name[2][0] = 'Peter Kunz';
  $name[2][1] = 'peter@kunz.de';

  echo $name[0][0].' '.$name[0][1].'<br>';
  echo $name[1][0].' '.$name[1][1].'<br>';
  echo $name[2][0].' '.$name[2][1].'<br>';
?>

Was zum Teufel haben wir denn jetzt gemacht? Ganz einfach, wir haben drei Arrays angelegt, die wiederum auch Arrays sind. $name[0] beinhaltet die Daten von Frau Mustermann (wieso eigentlich mann?), $name[1] die von Herrn Hinz und $name[2] die von Herrn Kunz. Auf der zweiten Ebene werden nun die Inhalte unterteilt in den Namen [0] und die E-Mail [1]. Es wäre jetzt ein Leichtes, noch ein Element hinzuzufügen, zum Beispiel die Straße:


<?php
  $name[0][0] = 'Claudia Mustermann';
  $name[0][1] = 'info@mustermann.de';
  $name[0][2] = 'Musterstraße 0';
?>

Alternative Schreibweise


<?php
  $name = array (
                  array (
                          'Claudia Mustermann',
                          'info@mustermann.de',
                          'Musterstraße 0'
                        ),
                  array (
                          'Dieter Hinz',
                          'dieter.hinz@wasweissich.de',
                          'Kunzweg 0'
                        )
                );
?>

Allerdings hat die Sache einen Haken. Um die einzelnen Werte der zweiten Ebene auszulesen, muss man die genaue Reihenfolge kennen. Das ist im Moment noch zu bewältigen, aber bei vielen zusätzlichen Elementen in der zweiten Ebene verliert man sehr schnell den Überblick.

3. Assoziative Arrays

Um diesem Problem aus dem Weg zu gehen, nimmt man anstelle der nackten und wenig aussagekräftigen Zahlen eine Beschreibung innerhalb des Indexes.


<?php
  $adresse['name']   = 'Claudia Mustermann';
  $adresse['straße'] = 'Musterstraße 0';
  $adresse['plz']    = '00000';
  $adresse['ort']    = 'Musterstadt';
  $adresse['mail']   = 'info@mustermann.de';

  echo $adresse['name'].' '.$adresse['straße'] ...usw.
?>

Erstaunlicherweise darf man bei der Benamung dieser Indizes so ziemlich alles machen, was man will. Es gibt keinerlei Beschränkungen, wie Umlaute, Sonder- oder Leerzeichen. Selbst ein Array wie das Folgende ist erlaubt:


<?php
  $moi['Ich bin der Größte und der Schönste'] = 'Peter Kropff';
?>

Will man nun eine kleine Adressdatenbank aufbauen so könnte man ein mehrdimensionales, assoziatives Array aufbauen:


<?php
  $adresse[0]['name']   = 'Claudia Mustermann';
  $adresse[0]['straße'] = 'Musterstraße 0';
  $adresse[0]['plz']    = '00000';
  $adresse[0]['ort']    = 'Musterstadt';
  $adresse[0]['mail']   = 'info@mustermann.de';

  $adresse[1]['name']   = 'Dieter Hinz';
  $adresse[1]['straße'] = 'Hinzstraße 0';
  $adresse[1]['plz']    = '11111';
  $adresse[1]['ort']    = 'Hinzstadt';
  $adresse[1]['mail']   = 'dieter.hinz@bla.de';
?>

Alternative Schreibweise


<?php
  $adresse = array (
                  array (
                          'name'   => 'Claudia Mustermann',
                          'straße' => 'Musterstraße 0',
                          'plz'    => '00000',
                          'ort'    => 'Musterstadt',
                          'mail'   => 'info@mustermann.de'
                        ),
                  array (
                          'name'   => 'Dieter Hinz',
                          'straße' => 'Hinzstraße 0',
                          'plz'    => '11111',
                          'ort'    => 'Hinzstadt',
                          'mail'   => 'dieter.hinz@bla.de'
                        )
                );
?>

4. Verständnis

Das alles klingt jetzt ein wenig kompliziert und viele haben Probleme, Arrays und ihr Konzept zu verstehen. Aber wir alle arbeiten tagtäglich damit, ohne dass es uns bewusst ist. Ein Beispiel? Wir gehen samstags abends in eines dieser Riesen-Kinos. Irgendwann sitzen wir in "Kino 12", "Reihe 7", "Platz 8". Dämmert es?


<?php
  $multiplex[12][7][8] = 'Mein Platz';
?>

Oder in einem Parkhaus, 2. Etage, Abschnitt A, Platz Nr. 24.


<?php
  $parkhaus[2]['A'][24] = 'Mein Auto';
?>

Ein paar kleine Beispiele zur Verarbeitung von Arrays findet ihr später bei den Schleifen.

5. Ein Hinweis

Eigentlich gehört es zum guten Stil, ein Array immer als solches zu definieren. Und das unabhängig von der Schreibweise. Auch wenn es bei der Variante mit dem $arrayname[irgendwas] nicht notwendig ist.


<?php
  $adresse    = array();
  $adresse[0] = ...
?>

zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt