Derzeit online: ca. 64 User  
Spenden via PayPal PHP für dich ist auch als Buch erhältlich - im handlichen Format, zum Nachschlagen, Mitnehmen oder gemütlichen nebenbei Lesen. Mit noch mehr Informationen, zusätzlichen Beispielen und Übungsaufgaben.
Jetzt in der aktualisierten Version bei Amazon oder BoD bestellen!


PHP

Speichere vieles...

... in einer "Variable" - das Array

Was ist eigentlich ein Array? Nun, ich würde ein Array als eine Variable, in der viele weitere Variablen gespeichert werden können beschreiben. Eine jede dieser "Variablen" ist durch eine eindeutige Nummer oder einen Begriff ansprechbar.

Ein Array bekommt, wie jede "normale" Variable einen Namen zugeordnet, jedoch erfolgt die Zuweisung der Inhalte nicht über ein einfaches Ist-Gleich, sondern über die Funktion array.
<?php
$blumen = array("Rose", "Tulpe", "Nelke", "Sonnenblume");
?>
In diesem Fall existiert ein Array namens blumen in das verschiedene Blumennamen geschrieben wurden. Diese Blumennamen haben jetzt automatisch Nummern zugewiesen bekommen, wobei die Nummerierung bei 0 beginnt (Rose hat also den Wert 0, Tulpe den Wert 1 usw.).

Der Zugriff erfolgt jetzt über den Arraynamen plus der Nummer des Eintrages in eckigen Klammern.
<?php
echo $blumen[3];
?>
In diesem Fall wird der Begriff Sonnenblume ausgegeben.

In manchen Fällen ist die vorgegebene Nummerierung jedoch nicht verwendbar und so kann man auch selbst einen eindeutigen Namen (oder eine Nummer) für jeden Eintrag festlegen. Dabei schreibt man zunächst den Namen für den Wert und durch einen Pfeil (=>) getrennt den Wert.
<?php
$blumen = array("rot"=>"Rose", "rosa"=>"Tulpe", "weiss"=>"Nelke", "gelb"=>"Sonnenblume");
?>
Jetzt haben alle Blumennamen eine Farbe zugeordnet bekommen, über die sie angesprochen werden können.
<?php
echo $blumen["rosa"];
?>
Gibt somit Tulpe aus.

Verwendet man Worte, so muss man diese unter Anführungszeichen setzen - weist man jedoch Zahlen zu, ist das nicht notwendig.

Es gibt bei Arrays eine Funktion, um zu überprüfen, wieviele Werte sich in dem Array befinden. Das kann z. B. dann genutzt werden, wenn man in das Array nur eine bestimmte Anzahl von Werten schreiben möchte. Der Befehl dazu lautet count.
<?php
$anzahl = count($blumen);
?>
Der Rückgabewert würde in unserem Fall 4 ergeben, da sich vier Werte im Array befinden.

Eine weitere wichtige Funktion ist die Überprüfung, ob sich ein bestimmter Wert bereits im Array befindet (ich habe z. B. einen Zufallsgenerator für Lottozahlen programmiert und dabei alle Zahlen in ein Array geschrieben und davor immer abgefragt, ob die Zahl nicht schon existiert, damit kein Wert doppelt vorkommt).

Die Funktion dazu lautet in_array und beinhaltet, welcher Wert gesucht wird und worin (in welchem Array) gesucht werden soll. Am sinnvollsten ist der Einsatz im Zusammenhang mit einer if-Abfrage.
<?php
if(in_array("Tulpe", $blumen))
{
  echo "Tulpe ist im Array enthalten.";
}
?>
Hier wird überprüft, ob sich der Wert Tulpe im Array blumen befindet. Ist dies der Fall wird der Text ausgegeben - ansonsten passiert nichts.

Eine weitere Funktion, die ich beim oben erwähnten Lottozufallsgenerator verwendet habe war array_push. Hierbei wird das Array um einen Wert erweitert - er wird in das Array dazugeschrieben. Die Zuweisung erfolgt so:
<?php
array_push($blumen,"Efeu","Kornblume");
?>
Zunächst wird festgelegt, welches Array erweitert werden soll und danach werden (durch Komma getrennt) die gewünschten Werte angegeben.

Beachte, dass hierbei kein Name für einen Wert zugewiesen werden kann. Wenn du diese Funktion in Verbindung mit einem Array, in dem du Namen zugewiesen hast, benutzt, wird das Array nicht erweitert.

Was bei Arrays noch von Interesse ist, ist die Sortierung der darin enthaltenen Werte. Diese kann auf unterschiedliche Arten erfolgen.

Möchte man die Feldnamen sortieren, verwendet man die Funktionen ksort oder krsort, wobei ksort eine aufsteigende Reihenfolge (a,b,c,d) liefert und krsort eine absteigende (d,c,b,a).
<?php
ksort($blumen);
?>
Ergibt die Reihenfolge gelb (Sonnenblume), rosa (Tulpe), rot (Rose), weiss (Nelke). Die Werte werden jedoch nach wie vor auf die gleiche Art und Weise angesprochen ($arrayname[Feldname]).

Möchte man die Werte sortieren, gibt es die Funktionen asort und arsort. Auch hier sortiert asort aufsteigend und arsort absteigend.
<?php
asort($blumen);
?>
Hier ergibt sich die Reihenfolge Nelke, Rose, Sonnenblume, Tulpe. Auch im Fall eines Arrays, dem keine Feldnamen zugewiesen wurden, bleiben jedoch die Nummern der einzelnen Werte gleich (Nelke hat nach wie vor den Eintrag Nummer 2).

Wenn da jetzt aber alles gleich bleibt - wozu benötigt man überhaupt eine Sortierung?

Nun, es gibt auch eine Möglichkeit, nicht einen bestimmten Wert eines Arrays anzusprechen, sondern das gesamte Array auf einmal ausgeben zu lassen. Dazu dient die Funktion foreach.

Mit foreach wird jeder Wert des Arrays vorrübergehend einer Variable zugeordnet und dann z. B. gelistet. Der Name der Variable wird durch den Befehl as angegeben.
<?php
foreach($blumen as $meine_blume)
  echo $meine_blume,"<br />";
?>
Die Liste würde dann so aussehen:

Rose
Tulpe
Nelke
Sonnenblume


Wende ich jetzt meine Sortierung an, ändert sich die Reihenfolge bei der Ausgabe ...
<?php
asort($blumen);
foreach($blumen as $meine_blume)
  echo $meine_blume,"<br />";
?>
... ergibt folgendes ...

Nelke
Rose
Sonnenblume
Tulpe

Vielleicht ist dir aufgefallen, dass wir hier im Gegensatz zu den if-Anweisungen keine geschwungenen Klammern verwendet haben. Das funktioniert in diesem Fall, weil wir nur eine einzige Anweisung (die echo-Anweisung) ausführen lassen. Möchten wir beispielsweise den Zeilenumbruch in eine extra echo-Anweisung schreiben müssen wir geschwungene Klammern verwenden um die Anweisung festzulegen.
<?php
foreach($blumen as $meine_blume)
{
  echo $meine_blume;
  echo "<br />";
}
?>
Diese Anweisung liefert genau das gleiche Ergebnis wie oben, jedoch ist die Schreibweise etwas anders.

Mit diesem System lassen sich auch if-Abfragen innerhalb einer foreach-Schleife bewerkstelligen (z. B. wenn man überprüfen möchte, ob gerade ein bestimmter Wert ausgegeben werden soll.

Den erwähnten Lottozufallsgenerator findest du übrigens im Buch.

Und als nächstes verrate ich jetzt endlich den "Trick" mit dem richtig formatierten Datum.

Autor: Claudia Unkelbach

=> Weiter
© 2001 - 2017 Claudia Unkelbach
Gießener Straße 75, 35396 Gießen