Anzeige
Tutorialbeschreibung

PHP - Teil 14 - Arrays anlegen und auslesen

PHP - Teil 14 - Arrays anlegen und auslesen

Arrays sind Felder, in denen verschiedene Elemente unterschiedlichen Typs enthalten sein können. Dabei sind in den Arrays geordnete (Achtung: nicht zwangsweise sortierte!) Schlüssel-Wert-Paare hinterlegt. Die Schlüssel (keys) können ausschließlich aus Integer-Zahlen oder Strings bestehen. Die Werte hingegen können beliebige Werte enthalten, ja sogar Arrays selbst sind hier möglich.

Um ein Array in PHP anzulegen, wird das Schlüsselwort array verwendet. Im einfachsten (nämlich eindimensionalen) Fall sieht ein Array folgendermaßen aus:

<?php
$namen = array('Michael', 'Toni', 'John', 'Hans';
?>

Dieses Array besteht aus vier Elementen. Die Schlüssel bzw. Indizes werden automatisch zugewiesen. Möchte man nun auf die einzelnen Einträge dieses Arrays zugreifen, verwendet man deren Index. Beachtet dabei unbedingt, dass die interne Zählung immer bei 0 beginnt. Das erste Element besitzt also den Index 0, das zweite Elemente den Index 1 usw.

Für den Zugriff auf Array-Elemente werden eckige Klammern verwendet. Innerhalb dieser Klammern wird der entsprechende Index angegeben. Angenommen, ihr wollt auf das Element Toni im vorherigen Beispiel zugreifen:

echo $namen[1];

Nun kann man Elemente von Arrays nicht nur auslesen, sondern diese auch verändern. Dazu weist man der Variable den gewünschten Wert zu.

<?php
$namen = array('Michael', 'Toni', 'John', 'Hans';
$namen[1] = "Dieter";
?>

Um den Wert zu verändern, gibt man den Index des Elements an und definiert den neuen Wert. Ist bereits ein Element mit dem angegebenen Index vorhanden, wird dessen Wert überschrieben. Im gezeigten Beispiel wird also der Wert von Toni in Dieter verändert. Sollte das Element mit dem angegebenen Index allerdings noch nicht existieren, wird es an das Array angefügt. Interessant ist diese Möglichkeit, da man somit zunächst leere Arrays anlegen und diese anschließend mit Elementen füllen kann.

<?php
$namen = array();
$namen[1] = "Dieter";
$namen[2] = "Michael";
$namen[7] = "John";
var_dump($namen);
?>

In diesem Beispiel wird die Funktion var_dump() verwendet. Mit dieser Funktion lassen sich sämtliche Informationen über eine Variable ermitteln. Arrays (und Objekte) werden von var_dump() rekursiv durchlaufen und die Werte werden eingerückt dargestellt. Das zuvor gezeigte Beispiel sieht im Browser folgendermaßen aus:

Bilder


Wobei die richtige Einrückung eigentlich nur sichtbar wird, wenn man sich den Quellcode der Seite im Browser anzeigen lässt.

Durch var_dump() wird also die Array-Größe angezeigt. Zusätzlich liefert die Funktion die Indizes und die Werte der Elemente. Ausführliche Informationen zur verwendeten Funktion findet ihr unter http://de.php.net/var_dump.

In den bisherigen Beispielen wurden für Schlüssel bzw. Indizes ausschließlich Zahlen verwendet. PHP erlaubt allerdings auch den Einsatz von Zeichenketten/Strings. Arrays, bei denen Strings als Indizes verwendet werden, bezeichnet man üblicherweise als assoziative Arrays.

Wie sich solche assoziativen Arrays umsetzen lassen, zeigt das folgende Beispiel:

<?php
$namen = array();
$namen['Name'] = 'Mayer';
$namen['Vorname'] = 'Michael';
$namen['Wohnort'] = 'Berlin';
echo 'Mein Name ist '.$namen['Name'].'. Mein Vorname lautet '.$namen['Vorname'].' Ich wohne in '.$namen['Wohnort'].".n";
echo "<br  />";
var_dump($namen);
?>

Die Ausgabe sieht folgendermaßen aus:

Bilder


Es muss übrigens nicht in jedem Fall ein Index angegeben werden, wenn man einen Wert zuweist. Lässt man den Index weg, wird automatisch der größte Indexwert +1 angenommen. Der Minimalwert beträgt allerdings immer 0.

<?php
$zahlen = array();
$zahlen[] = "wert";   
// Als Index wird 0 verwendet.
$zahlen[] = "wert";   
// Als Index wird 1 verwendet. Der höchste bisherige Index ist 0.
$zahlen[10] = "wert"; 
// Der Index 10 wurde angegeben.
$zahlen[] = "wert";   
// Als Index wird 11 verwendet. Der höchste bisherige Index betrug 10.
var_dump($zahlen);
?>

Die Ausgabe von var_dump() sieht folgendermaßen aus:

Bilder



 

Elemente löschen

Man kann in Arrays nicht nur Elemente einfügen. Ebenso lassen sich nicht mehr benötigte Elemente aus Arrays löschen. Verwendet wird dafür die Funktion unset(). Mit dieser Funktion lassen sich sowohl Variablen als auch einzelne Elemente eines Arrays löschen.

$namen = array('Michael', 'Hans', 'Dieter');

Möchte man nun beispielsweise Hans löschen, verwendet man folgenden unset()-Aufruf:

unset($namen[1]);

Löscht man einzelne Einträge eines Arrays, entstehen im Index des Arrays Lücken. Im vorherigen Beispiel würde der Aufruf $namen[1] anschließend keinen Wert mehr zurückliefern, da das Element gelöscht wurde. Beim Zugriff auf Arrays über foreach() stört das allerdings nicht weiter. (Mehr zu foreach() dann im weiteren Verlauf dieses Tutorials). Problematisch ist das Ganze lediglich, wenn man ein Array mit einem fortlaufenden Index für den direkten Zugriff benötigt. In solchen Fällen kann man das Array allerdings unter Zuhilfenahme der restlichen Elemente neu anlegen.

$namen = array_values($namen);

Eine weitere interessante Möglichkeit besteht darin, einzelne Teile eines Arrays zu entfernen und dabei dann automatisch einen fortlaufenden numerischen Index erzeugen zu lassen. Verwendet wird dafür die Funktion array_splice().

array_splice($namen, 1, 1);

Ausführliche Informationen zu array_splice() gibt es auf der Seite http://www.php3.de/array_splice.

Ebenso lassen sich auch ganze Arrays löschen. Dazu weist man unset() das zu löschende Array zu.

unset($namen);



 

forearch()-Schleifen

Im Zusammenhang mit der Definition von Schleifen in PHP wurde bereits auf die Kombination aus Arrays und foreach() hingewiesen. Dieser Schleifentyp ist perfekt für die Arbeit mit Arrays. Wie ihr auf einzelne Werte eines Arrays zugreifen könnt, wurde bereits gezeigt. Mit foreach() werden die einzelnen Elemente eines Arrays durchlaufen.

Eingeleitet wird dieser Schleifentyp über das Schlüsselwort foreach(). Innerhalb der Klammern wird dann das Array bzw. die Variable, in der das Array enthalten ist, notiert. Daran schließt sich das Schlüsselwort as an, hinter dem erneut ein Variablenname steht. In dieser Variable wird bei jedem Schleifendurchlauf der Wert des nächsten Arrays gespeichert. Im Anschluss daran wird der eigentliche Schleifenrumpf definiert.

Ein Beispiel:
<?php
$a = array("eins", "zwei", "drei", "vier");
foreach ($a as $value) {
    echo $value."<br />";
} 
?>

 
Hier wird der Variable $a als Wert ein Array zugewiesen. Die Werte des durchlaufenden Arrays werden jeweils in der Variable $value gespeichert. Innerhalb des Schleifenrumpfs werden die einzelnen Elemente des Arrays dann untereinander ins Dokument geschrieben.

Bilder


Ebenso ist es möglich, parallel zu den Elementen auch deren Indizes auszugeben. Interessant ist das beispielsweise, wenn man die Elemente des Arrays verändern will.

Dazu muss vor der Schleifenvariablen die Syntax $variable => definiert werden., wobei der Name der Variable frei gewählt werden kann.

Auch hierzu wieder ein Beispiel:

<?php
$namen = array('Name' => 'Michael','Vorname' => 'Mayers','Ort' => 'Berlin', 10 => 100);
foreach ($namen as $index => $wert) {
echo "Das Element mit dem Index <em>".$index."</em> hat den Wert <em>".$wert."</em><br />";
}
?>

 
Um Elemente des Arrays zu verändern, greift man auf diese über deren Indizes zu.

Bilder


DVD-Werbung
Kommentare
Achtung: Du kannst den Inhalt erst nach dem Login kommentieren.
Portrait von franzg
  • 14.05.2017 - 22:49

Array ganz einfach! Gut rüber gebracht! Danke!

Portrait von kleckser*1
  • 07.10.2016 - 12:56

Danke für das Tutorial.

Portrait von dmtw2107
  • 16.11.2013 - 09:38

verständlich und toll erklärt danke für das tutorial

Portrait von Swinq
  • 27.07.2011 - 14:36

Wieso gehst Du nicht auch auf mehrdimensionale Array's ein? Nebenbei bemerkt, hast Du vereinzelt Fehler (Fehlende schließende Klammer) in Deinen Beispielen.

Ansonsten ist es sehr nett geschrieben und für Anfänger bestimmt hilfreich.

x
×
×