Zur Startseite PHP unterstützt bekanntermaßen auch Arrays. So kann eine Variable folgendermaßen angelegt werden:
$artikel[] = array("Produkt1", 4.50);
$artikel[] = array("Produkt2", 2.30);
$artikel[] = array("Produkt3", 5.80);
PHP vergibt dabei den Array-Index beginnend bei 0, da PHP nullbasierte Indizes verwendet (ähnlich wie bei C++ übrigens). Jedes Array-Element ist dabei wieder ein Array. Wenn man also eines der Array-Elemente einer Variablen zuweist:
$temp = $artikel[0];
so ist $temp ein Array mit zwei Elementen, nämlich $temp[0] mit dem Inhalt "Produkt1" und $temp[1] mit dem Inhalt "4.50".
Advertisement/Werbung
Sinnvoll ist eine solche Verwendung von Arrays beispielsweise, wenn ein kleiner Warenkorb angelegt werden soll. Die Produktbezeichnung und der Preis sollte dabei möglichst unabhängig vom eigentlichen Skript definiert werden, damit man später leicht die Produkte austauschen kann, ohne das ganze Skript umschreiben zu müssen.
Anmerkung: Die hier vorgestellten Beispiele sollen lediglich das Prinzip verdeutlichen. Bei einigen Einzelheiten würde man in einer endgültigen Anwendung möglicherweise anders vorgehen. Sie dienen hier lediglich als Beispiele, damit das Verfahren anschaulich erläutert werden kann. In meinen Online-Kursen wird selbstverständlich genauer auf Einzelheiten eingegangen.
Man kann auch auf andere Art, auf eine solche Array-Konstruktion zugreifen. Das "Array im Array" ist nämlich nichts anderes als ein zweidimensionales Array, so dass auch der folgende Zugriff funktioniert: $artikel[0][0] enthält "Produkt1", $artikel[0][1] enthält den Preis von "4.50" Euro.
Verwirrend? Dann hilft vielleicht folgender kleine Tipp:
Arrays lassen sich bequem lesbar auf der Seite anzeigen, wenn Sie folgenden Code in PHP verwenden:
echo "<pre>"; print_r($artikel); echo "</pre>";
Als Ausgabe erhalten Sie dann in unserem Beispiel dieses:
Array
(
[0] => Array
(
[0] => Produkt1
[1] => 4.5
)
[1] => Array
(
[0] => Produkt2
[1] => 2.3
)
[2] => Array
(
[0] => Produkt3
[1] => 5.8
)
)
So lässt sich leicht Licht in das Dunkel der mehrdimensionalen Arrays bringen. Die Ausgabe des HTML-Tags "<pre>" sorgt dafür, dass Absätze und Einrückungen der nachfolgenden Ausgabe exakt so dargestellt werden, wie sie im HTML-Quelltext erscheinen. Die PHP-Funktion print_r() zeigt den Inhalt und Aufbau einer Variable in lesbarer Form (print_r bedeutet "print readable"). Anschließend wird mit dem HTML-Tag "</pre>" die Anzeige wieder auf normales HTML-Verhalten umgestellt.
Was macht man aber nun, wenn man Arrays auch in HTML-Formularen verwenden will? Hier hilft folgender Tipp:
Ein HTML-Eingabefeld wird normalerweise mit einem Namen versehen, beispielsweise:
<input type="text" name="anzahl_produkt1"> <input type="text" name="anzahl_produkt2"> <input type="text" name="anzahl_produkt3">
Hier wird es nun schwierig, in PHP den Inhalt der einzelnen Variablen auszulesen, weil diese nun unterschiedliche Namen haben. Zwar gibt es auch dafür in PHP eine Lösung (nämlich die "variable Variable"), wesentlich praktischer ist es jedoch, ein Array dafür einzusetzen:
<input type="text" name="anzahl_produkt[]">
Durch die Wahl des Namens "anzahl_produkt[]" erzeugt das Absenden des Formulars in PHP eine Array-Variable, die dann entsprechend mit dem Array-Index 0 beginnt. So kann das HTML-Formular die Eingabefelder dynamisch (z.B. über eine For-Schleife) erzeugen. Es werden genau so viele Eingabefelder benötigt, wie das Array $artikel Elemente hat. Die Anzahl kann man über sizeof($artikel) leicht herausfinden. Ein einfaches Bestellformular könnte dann also so programmiert werden:
print('<form action="'.$_SERVER['PHP_SELF'].'" method="post">');
for($k = 0; $k < sizeof($artikel); $k++)
{
print $artikel[$k][0];
print(' Anzahl: ');
print('<input type="text" name="anzahl_produkt[]">');
print('<br />');
}
print('<input type="submit">');
print('</form>');
Zur Abfrage im Skript können Sie dann folgende Schleife nutzen:
for ($k = 0; $k < sizeof($artikel); $k++)
{
print('Anzahl für ');
print($artikel[$k][0]);
print(' = ');
print($_POST['anzahl_produkt'][$k]);
print('<br />');
}
Wollen Sie mehr darüber erfahren? Auf meiner Seite lernpilot.de wird ein PHP-Online-Kurs als WBT (Web Based Training) angeboten. Infos zu den Schulungen gibt es unter www.lernpilot.de/wbt/
Hinweis: Diesen Text und die enthaltenen Beispielprogramme und Skripte dürfen Sie zum Erlernen der einzelnen Techniken und auch als Grundlage für Ihre eigenen Projekte auf eigene Gefahr kostenlos nutzen.
Bitte denken Sie daran, dass alle Texte und Quellcodes trotzdem urheberrechtlich geschützt sind. Eine direkte Weitergabe ist nur nach ausdrücklicher schriftlicher Genehmigung gestattet.