PHP Array

Arrays dienen der strukturierten Speicherung von logisch zusammengehörigen Werten. In PHP sind Arrays grundsätzlich als Schlüssel-Wertepaare organisiert. Welche Schlüssel dabei verwendet werden, hängt dabei von der Art der Initialisierung des Arrays ab. Der direkte – lesende, wie auch schreibende – Zugriff auf ein PHP-Array erfolgt unter Angabe eines Elementenschlüssels über den Vektoroperator.

Der wohl am häufigsten verwendete Zugriff erfolgt über einen Elementenindex – als Index wird eine ganze Zahl angegeben, wobei diese normalerweise positiv sind; allerdings können auch negative Indexe angegeben werden, die dann aber als String-Key gewertet werden. Dies liegt sicher daran, dass diese Form des Zugriffs auch in anderen Programmiersprachen – zumindest mit positiven Indexen – auf die selbe Art funktioniert. Mit dem Vektoroperator, der in nahezu allen Programmiersprachen mit dem eckigen Klammerpaar ([]) genutzt wird, funktioniert der Zugriff, indem ein Indexwert angegeben wird. Der Indexwert besagt, auf welchen der sequenziell unter ihrem Index im Array gespeicherten Speicherplätze sich eine Operation bezieht. Das erste in einem Array gespeicherte Element wird unter PHP an der Indexposition 0 abgelegt. Auch dieses Verhalten teilt PHP mit anderen Programmiersprachen, wie etwa Java oder C++. Voraussetzung ist hier allerdings, dass das Array entsprechend initialisiert wurde. Beachten Sie bitte auch unsere Beispiele zu Arrays in JavaScript.

PHP Array Beispiel: Initialisierung mit automatischer Schlüsselvergabe (Vektor)

Im ersten Beispiel zu PHP-Arrays wird zunächst ein Array initialisiert. Dies geschieht, indem das Array, welches hier unter dem Variablennamen v gespeichert wird, über das Sprachkonstrukt array mit den angegebenen Werten gefüllt wird. Das Beispiel initialisiert das Array mit automatischer Schlüsselvergabe. Dies bedeutet, dass das erste Element (im Beispiel der Wert 1), welches in array angegeben wird, unter der Indexposition 0 abgelegt wird. Der darauf folgende Wert wird unter der Indexposition 1 gespeichert, der dritte Wert unter Indexposition 2 und so weiter.

Durch den Befehl array wird das hierdurch initialisierte Array zurückgeliefert und dann unter der Variable v gespeichert. Belegt sind nach diesem Befehl also die Array-Elemente v[0] bis v[6]. Auf diese Elemente kann nun also mittels der Indexwerte (0-6) zugegriffen werden. Als nächstes wird die Anzahl der im Array gespeicherten Elemente ermittelt und ausgegeben.

Dazu wird zuerst die Anzahl der in v gespeicherten Elemente ermittelt. Dies erledigt der Aufruf der Funktion count, welcher diese Anzahl liefert. Das Ergebnis dieses Aufrufs wird mit den links und rechts davon stehenden Strings zusammengefasst – über den Concatenation-Operator zum aneinanderhängen von Strings – und dann mit Hilfe der Funktion echo ausgegeben.

Der darauf folgende PHP-Code gibt den Inhalt des zuvor definierten Arrays aus. Die Foreach-Schleife entnimmt dem Array jeden einzelnen Wert in der Reihenfolge, in der die Werte im Array abgelegt sind. Jeder einzelne Wert wird zum Gebrauch innerhalb der Schleife in der Variable val zwischengespeichert und dann mit echo – jeweils gefolgt von einem Leerzeichen – ausgegeben.

In der letzten Ausgabe des Beispiels wird eine der zahlreichen Array-Funktionen genutzt. Die Funktion array_sum dient dazu, die Summe aller im Array gespeicherten Werte zu berechnen. Als Parameter erwartet die Funktion eine Variable, die das entsprechende Array vorgibt.

<?php
// Variable v als Array definieren, die mit einer Werteliste
// vorbelegt wird.
$v = array (1, 2, 5, 7, 11, 13, 17);
// Anzahl der im Array enthaltenen Elemente (array length) ermitteln.
// Hier kann auch die Funktion sizeof verwendet werden.
echo 'Array Length: ' . count ($v) . '<br>';

echo 'Element im Array: ';
// Iteration durch das Array mit der Foreach-Schleife
foreach ($v as $val)
    // Ausgabe des aktuellen Wertes
    echo $val . ' ';
echo '<br>';

// Summe über die im Array gespeicherten Werte
echo 'Summe: ' . array_sum ($v) . '<br>';
?>

Array Length: 7
Element im Array: 1 2 5 7 11 13 17
Summe: 56

PHP Array Beispiel: Array length / count - Größe eines Arrays

Das nächste Beispiel initialisiert ein leeres Array und weist dann den Indexpositionen 1, 3 und 5 verschiedene Werte zu. Danach wird die Anzahl der Elemente im Array ermittelt und dann mit einem entsprechenden String ausgegeben. In Folge wird mit der For-Schleife der Inhalt des Arrays ausgegeben.

Allerdings muss hier einiges an Aufwand getrieben werden. Das liegt daran, dass die Elemente nicht unter den Indexen 0 bis 2 gespeichert wurden. Die For-Schleife ist hier in einer Form notiert, wie sie häufig verwendet wird. Der Schleifenzähler (Zählervariable) läuft von 0 bis 2 (wegen < 3, wobei dieser Wert durch die Funktion count ermittelt wird). Da die Elemente im Array nicht unter diesen Indexen gespeichert wurden steht zu erwarten, dass die Aufrufe zu den Indexpositionen 0 und 2 zu Fehlern führen.

Um diesen Fehlern vorzubeugen bedient sich das Script der isset Function. Mit dieser Funktion wird im Schleifenkörper jedes Element des Arrays vor dem Zugriff auf dessen Existenz geprüft. Befindet sich ein Element an der Position im Index, so wird dieses Element ausgegeben. Ist dem nicht so (siehe Else-Teil des If-Statements), erfolgt die Ausgabe einer Fehlermeldung, die angibt, an welcher Indexposition der Zugriff fehl geschlagen ist.

Im darauf folgenden Abschnitt wird ein anderer Schleifentyp zur Ausgabe des Arrays verwendet. Hier handelt es sich um eine While-Schleife, die sich der each-Funktion bedient, welche der Reihe nach alle Schlüssel-Wertepaare aus dem Array abruft. Da die Funktion each mit einem internen Zeiger arbeitet, der die aktuelle Position im Array speichert, muss der Zeiger des Arrays zunächst mit der Funktion reset auf das erste Element im Array gesetzt werden. Dies ist immer dann nötig, wenn Funktionen zur relativen Iteration durch ein Array verwendet werden – das Array wird quasi als Liste behandelt. Hierzu zählen neben each die Array-Funktionen next, prev und end. Jedes durch each in Form eines Arrays ermittelte Schlüssel-Wertepaar wird mit list in einem Schritt den temporären Variablen key und value zugewiesen. Danach wird der Inhalt der Variablen mit echo ausgegeben.

In einer dritten – und zugleich einfacher zu verwendenden – Schleife wird der Inhalt des Arrays nochmals ausgegeben. Hier kommt die Foreach-Schleife zum Einsatz, die den internen Array-Zeiger automatisch beim ersten Zugriff auf das erste Element setzt. Hierdurch lassen sich Fehler vermeiden, die auftreten können, wenn der Aufruf von reset vergessen wird. Auch hier werden die Schlüssel (key) und die darunter gespeicherten Werte (value) dem Array belage entnommen. Die hierbei entnommenen Werte werden auch hier im Dokument ausgegeben.

<?php
// Variable mit einem leeren Array initialisieren
$belage = array ();
// Werte auf direkten Indexen zuweisen
$belage[1] = 'Thunfisch';
$belage[3] = 'Salami';
$belage[5] = 'Pilze';
// Ausgabe der Array-Length
echo 'Anzahl der Elemente: ' . count ($belage) . '<br>';

// Zugriff über den Array-Index
for ($i = 0; $i < count ($belage); $i++)
    // Existiert an der Indexposition ein Element?
    if (isset ($belage[$i]))
        // Dan soll dieses ausgegeben werden
        echo 'belage[' . $i . ']: ' . $belage[$i] . '<br>';
    else
        // Ansonsten wird eine Fehlermeldung angezeigt
        echo 'Fehler: Indexposition ' . $i . ' existiert nicht!<br>';
echo '<br>';

// Zugriff über die Schlüssel-Wertepaare des Arrays
reset ($belage);
while (list ($key, $value) = each ($belage))
    echo "Key: $key; Value: $value<br>\n";
echo '<br>';

// Foreach-Schleife zur Ausgabe des Array-Inhalts
foreach ($belage as $key => $value)
    echo "Key: $key; Value: $value<br>\n";
?>

Anzahl der Elemente: 3
Fehler: Indexposition 0 existiert nicht!
belage[1]: Thunfisch
Fehler: Indexposition 2 existiert nicht!

Key: 1; Value: Thunfisch
Key: 3; Value: Salami
Key: 5; Value: Pilze

Key: 1; Value: Thunfisch
Key: 3; Value: Salami
Key: 5; Value: Pilze

Letzte Posts aus unserem Forum

Wer kennt .....

Hallo erstmal wer kennt von euch einen WEbprogrammieren,desginer der mir eine Seite erstellen kann ,Communityportal sowas in der art wie ... » mehr

von NCWebmaster am Mittwoch, 7. Oktober 2009 00:32 in PHP - bisher 2 Antworten
Letzter Beitrag: Montag, 17. Dezember 2012 16:57 von maharadja

...einen guten Onlineshop für Taufringe? Ich habe bisher Taufringe Direkt gefunden und wollte mal nachhaken, ob der Shop für Taufringe wirklich so ... » mehr

Webentwickler Konferenz in Hamburg

Hallo Zusammen, Am 20./21. Mai findet in Hamburg die erste Developer Conference 2011 statt. Wie der Name bereits verrät, handelt die Konferenz rund ... » mehr

von devcon-hamburg am Dienstag, 12. April 2011 16:50 in PHP - noch nicht beantwortet

bedingte Weiterleitung in Kontaktformularen

Hallo zusammen, ich habe ein kleines Problem: Ich brauche bei der Entwicklung eines Kontaktformulares für eine Website eine bedingte Weiterleitung ... » mehr

von scatha am Donnerstag, 10. März 2011 01:12 in PHP - noch nicht beantwortet

Gesucht: Auslesen einer externen Website

Mein vorhaben ist recht simpel aber ich bin php noob (hoffe das entschuldigt es nen bissl xD) und hab kp wie ichs anfangen soll. Und zwar möchte ich ... » mehr

von HeathenMan am Dienstag, 1. Februar 2011 22:57 in PHP - bisher 1 Antwort
Letzter Beitrag: Donnerstag, 3. Februar 2011 14:43 von alm

Hallo, am einfachsten und kompaktesten kann man das mit einem regulären Ausdruck machen. Einfach mal nach der Funktion preg_match_all suchen und den ... » mehr

Zeilenumbruch in der Bildergalerie-Beschriftung

Hallo, die Bildergalerie mit php und js ist super, jedoch möchte ich gern zu meinen Bildern verschiedene Bemerkungen machen und zwar untereinander, ... » mehr

von Sylma am Mittwoch, 26. Januar 2011 01:13 in PHP - bisher 1 Antwort
Letzter Beitrag: Freitag, 28. Januar 2011 10:16 von alm

Hallo, ich nehme an, dass \n im Beschreibungstext nicht funktioniert aber versuchen kann man es. Ansonsten: Schon mal mit einer UTF-Sequenz ... » mehr

¬ Tutorials



¬ Insolvenzrecht