PHP-lernen 7: Arrays

In der Lektion 5 habe ich beschrieben wie man einer Variablen einen Wert zuweist. Aber was ist wenn man einer Variablen mehrere Werte zuweisen will und wenn diese Werte in irgendeiner For zusammengehören? Dann kommen Arrays (Wertelisten bzw. Datenfelder bzw. Feldvariablen) zum Einsatz.

Fangen wir mit dem ersten Beispiel an. Der Variablen $wochentag weisen wir die sieben Wochentage zu:


<?php
$wochentag[0]="Sonntag";
$wochentag[1]="Montag";
$wochentag[2]="Dienstag";
$wochentag[3]="Mittwoch";
$wochentag[4]="Donnerstag";
$wochentag[5]="Freitag";
$wochentag[6]="Samstag";
// Nur den Mittwoch Ausgeben:
echo $wochentag[3];
?>

Ausgegeben wird: Mittwoch. Wie man an diesem Beispiel sehen kann werden einer Variablen mehrere Werte (Value) zugewiesen. Diese Werte werden von PHP intern durchgezählt. Der entsprechende Zähler nennt sich Index-Wert oder Schlüssel (key). Der Zähler beginnt in der Voreinstellung bei 0.

Dies war die Langform. Es gibt auch eine Kurzschreibweise:


<?php
$wochentag=array("Sonntag","Montag","Dienstag","Mittwoch",
"Donnerstag","Freitag","Samstag");
// Nur den Sonntag Ausgeben:
echo $wochentag[0];
?>

Der Variablen wird das Schlüsselwort array zugewiesen und in der Runden Klammern befindet sich die Werteliste. Die Werte werden jeweils durch ein Komma getrennt. Die Indexierung (Zuweisung der keys) erfolgt automatisch und beginnt bei 0.

Assoziative Arrays

Der Indexwert muss keine Nummer sein, es ist möglich Zeichenketten (Text) als Indexwerte zu nutzen. Diese kann man dann nach eigenem Schema einsetzen. Hier ein Beispiel:


<?php
$cms["blog"]="WordPress";
$cms["portal"]="Post Nuke";
$cms["wiki"]="PukiWiki";
// Blogsoftware ausgeben
echo $cms["blog"];
?>

Hier haben wir der Variable $cms (Content Managment System) mehrere Werte zugewiesen (Namen der div. CMS) und diese Indexiert (blog, portal oder wiki). Hierbei gibt es auch eine Kurzschreibweise:


<?php
$cms=array("blog"=>"WordPress", "portal"=>"Post Nuke", "wiki"=>"PukiWiki");
// Wiki ausgeben
echo $cms["wiki"];
?>

Wir arbeiten seit 20 Jahren mit WordPress und bieten diverse Dienst­leistungen rund um das System an. Kontaktiere uns für weitere Informationen oder für ein Angebot.

Verwandte Beiträge:

  • Keine verwandten Beiträge

7 Kommentare

  1. $cms[blog]="WordPress";
    Das ist nicht gut. Besser ist $cms['blog']="WordPress"; (oder noch besser $cms['blog']='WordPress';, da so ‘WordPress’ nicht nach Variablen geparset werden muss, aber darauf kommt es jetzt nicht an).

    Definierst du nämlich eine Konstante, etwa so: define('blog', 'portal');, also eine Konstante mit dem Namen blog und dem Inhalt Portal, weißt du nicht $cms[‘blog’] den Wert WordPress zu, sondern $cms[‘portal’].

    Stellt man den Errorreporting-Level so ein, dass auch Notices ausgegeben werden, erhälst du eine solche bei der Verwendung von $cms[blog] usw.

    Mehr dazu im PHP-Handbuch

  2. Hach, das “weißt” sollte natürlich mit s und nicht mit ß geschrieben werden …

  3. Nur der Vollständigkeit halber: Du verwendest in den Beispielen Deiner “Langform” zwar das wunderpraktische Feature des automatisierten Typings von PHP, aber bei Verwendung des E_ALL / E_NOTICE Errorlevels würde eine Warnung dabei ausgeworfen werden. Und zwar weist Du $wochentag[0] direkt zu, also direkt den Index eines Arrays, anstelle vorher die Variable $wochentag definiert zu haben. Dies würde der PHP-Parser anmeckern und bevorzugt folgendes:

    $wochentag = array();
    $wochentag[0] = ‘Montag’;
    $wochentag[1] = ‘Dienstag’;

    etc. Dabei fällt mir ein, hilfreich wäre an der Stelle vielleicht auch der Verweis, dass $wochentag[] = ‘Mittwoch’ mit leerem Index direkt automagisch das nächste freie, numerische Element besetzen würde.

    Zu mehrdimensionalen Arrays kommt’s ja bestimmt noch. 🙂

    So, genug gesenft für heute.

  4. Wenn deine Variable “wochentag” heisst, wie kannst du dann “tag” ausgeben lassen?

    Bei “echo $tag[3]” sollte nicht Mittwoch rauskommen, sondern nix.

  5. > Wenn deine Variable “wochentag” heisst, wie kannst du dann “tag” ausgeben lassen?

    Hallo Beate,
    Schreibfehler 😉

Kommentare sind geschlossen.