https://www.newbieweb.de
Tutorial: PHP4 [Teil 3]
31.01.05

Tutorial: PHP4 (Teil 3)

Im Teil 2 hatten wir die normalen Variablen besprochen. Hierzu ist vielleicht noch ein Nachtrag nötig. Vielleicht wurde nicht ganz klar, wie genau nun eine Variable, quasi ins Leben gerufen wird. Um es kurz zu machen: es gibt keinen Befehl mit welchem Sie Variablen „erwecken“ können. Eine Variable existiert dann, wenn Sie in Form einer Wertzuweisung deklariert wird.

<?php

// Beispiele für Wertzuweisungen und Variablendeklaration

$str_var_1 = „“; // eine leere Variable erzeugen
$str_var_2 = „Ein Text“; // eine Variable mit Text
$str_var_3 = 58; //eine Variable mit einem Zahlenwert

?>


Beispiel 3.1

Wie Sie sehen gibt es verschiedene Möglichkeiten, doch alle haben eines gemeinsam. Sie erzeugen eine Variable. In dem vorangegangenen Teil, wurde vielleicht auch nicht die Komplexität und die Einsatzmöglichkeit klar. Darum hier noch mal genauer.

Eine Variable heißt deshalb Variable, weil sie variabel ist. Wer hätte das gedacht! Weise ich einer Variable, wie oben, einen Wert zu, ist dieser immer nur so lange in der Variable gespeichert, solange ich diesen nicht ändere. Sie sollten bereits ahnen auf was ich hinaus will. Sie können den Wert einer Variable ändern, und dies jederzeit. Das macht Variablen so effektiv. Prinzipiell unterscheidet sich der Austausch eines Wertes nicht von einer normalen Wertzuweisung, denn nichts anderes ist es. Ich weise einen neuen Wert zu, wodurch der alte bisherige Wert überschrieben, also gelöscht wird. Wenn wir also bei obigen Beispiel bleiben und einmal die leere Variable nehmen wollen, so würde, wenn man das Script etwas durch einen Ihnen schon bekannten echo() Befehl erweitern würde, das Browserfenster nach der Ausführung des Scriptes leer bleiben.

Eine Fehlermeldung wäre auch nicht zu sehen. Warum auch, denn das Script enthält keinen Fehler. Es gibt nur nichts anzuzeigen, da wir zwar die Variable angelegt, Ihr aber keinen Wert zugewiesen haben. Zumindest keinen im Browser sichtbaren. Wenn wir jedoch folgendes machen würden.

<?php

// Beispiel Wertwechsel einer Variablen $str_var_1 = "Neuer Wert"; echo $str_var_1; $str_var_1 = "Noch neuerer Wert"; echo $str_var_1;

?>

Beispiel 3.2

Dann sähe die Ausgabe im Browser folgendermaßen aus.




























Abb.3.1.

Wir haben die Werte einfach ausgetauscht. Zunächst wiesen wir, der bereits bestehenden Variable, einen neuen Wert in Form eines Textes zu. Dann ließen wir diesen mit Hilfe des Befehls echo() wieder ausgeben. Danach änderten wir wieder den Wert der Variable, wodurch der Alte Wert überschrieben wurde und ließen diesen ebenfalls ausgeben. Da wir keinerlei Formatierung verwendet haben, sieht das Ergebnis etwas seltsam aus, aber das Prinzip sollte nun klar sein. Zu der Möglichkeit Text Formatiert auszugeben, kommen wir später noch.



Weitere Variable Möglichkeiten

Was aber, wenn ich nun den Wert der Variable gar nicht überschreiben will, sondern mehrere Werte innerhalb einer Variablen speichern will. Nun mit einer „normalen“ Variable wie Sie, sie bisher kennen gelernt haben ist das nicht möglich, diese Werte werden immer wieder überschrieben. PHP wäre aber nicht PHP und schon gar nicht variabel und dynamisch würde es nicht auch hierfür eine Lösung geben.

Diese Lösung nennt sich Array. Arrays kann man sich wie Tabellen vorstellen in welchen es möglich ist mehrere Daten geordnet abzulegen und diese dann wieder bei Bedarf gezielt oder gesamt abrufen zu können. Stellen Sie sich doch einfach mal vor, Sie wollten eine Übersicht Ihrer CD-Sammlung auf einem Blatt Papier anlegen. Wie würden Sie das tun?

Der einfachste Weg ist hier auch wieder der beste. Sie erstellen Sich eine Tabellarische Liste ungefähr so:

  CD-Nr. | CD-Name         | CD-Genre      | In CD-Regal Nr.
  ----------------------------------------------------------
   1     | Bravo Hits 29   | Sampler       | 1
   2     | Grönemeyer / Ö  | Deutschrock   | 1
   3     | Die Ärzte / 13  | Punk          | 2
  ----------------------------------------------------------

Sieht logisch aus, oder? Gut vielleicht haben Sie einen anderen Musikgeschmack und würden die Tabelle etwas anders aufteilen, aber es sollte Ihnen klar sein was ich bezwecken will. Wollten Sie nun alle Werte in Variablen packen, müssten Sie für jeden Wert eine Variable anlegen.

<?php
// Wertzuweisung für CD-Sammlung
$int_cdNr = 1; $str_cdName = "Bravo Hits 29"; $str_cdGenre = "Sampler"; $int_cdRegal = "1";

?>
Beispiel 3.3

Nun hätten wir jeder Tabellenüberschrift einen Wert zugewiesen. Doch was ist mit den restlichen CD’s, wo wir doch wissen, wenn wir nun die Werte ändern, würden die alten Werte gelöscht. Wir müssten also neue Variablen erstellen.
<?php
// Weitere Variablen erzeugen für weitere CD
$int_cdNr_2 = 2; $str_cdName_2 = "Bravo Hits 29";
?>
Beispiel 3.4

Ich unterbreche das Script hier einmal. Denn, davon mal abgesehen, dass es recht unübersichtlich werden kann und richtig Arbeit wäre 150 CD so zu verwalten, ist es auch noch unproduktiv. Wie kann mir also ein Array hier weiterhelfen.

Dazu muss man wissen was ein Array ist, und wie es funktioniert. Ein Array ist eine mehrdimensionale Variable. Was heißt das schon wieder? Mehrdimensional heißt nichts anderes als das ich mehrere Werte unter mehreren Namen in einer Variablen speichern kann. Die Funktionsweise ist tabellarisch. Wie in einer Tabelle eben. Am besten lernen Sie dies an einem Beispiel. Gehen wir wieder von unserer CD-Sammlung aus. Nun haben wir eben jeden Wert der Tabelle einer Variablen zugewiesen. Es ist mit Hilfe von Arrays jedoch möglich, diese Tabelle in eine Variable zu packen. Dabei bildet der Tabellenkopf, also die Bezeichnung der Spalten, die Abrufmöglichkeit.



Eindimensionale Array

Doch zuvor noch etwas Wichtiges zu Arrays. Man unterscheidet eindimensionale und zweidimensionale Arrays. Eindimensionale Arrays sind Variablen, welche Mehrere Werte mit einem Variablennamen speichern können.

<?php
// Eindimensionaler Array

$arr_cdName[0] = "Bravo Hits 29"; $arr_cdName[1] = "Grönemeyer / Ö"; $arr_cdName[2] = "Die Ärzte / 13";
$arr_cdGenre[0] = "Sampler"; $arr_cdGenre[1] = "Deutschrock"; $arr_cdGenre[2] = "Punk";
?>
Beispiel 3.5

Die Sache sieht also schon geordneter aus. Was bedeuten nun diese Zahlen in den Eckigen Klammern „[ ]“? Das ist der so genannte Array Index. Mit Hilfe dieses Indexes kann ich später die Werte wieder abrufen, ohne den Inhalt kennen zu müssen. Der Index beginnt immer bei „0“, wie man im Beispiel sehen kann. Im späteren Verlauf der Tutorials werden Sie auch noch Schleifen kennen lernen. Mit deren Hilfe ist es möglich das ganze Array gleichzeitig auszugeben.

Es existiert noch eine Möglichkeit, welche eventuell etwas einfacher zu verstehen ist, Werte in ein Array einzutragen.

<?php
// Weitere Möglichkeit Werte in ein Array einzutragen


// Zeilen können auch umbrochen werden. PHP macht hier
// keinen Unterschied.
$arr_cdName = Array(„Bravo Hits 29“, „Grönemeyer / Ö“,
„Die Ärzte / 13“);

?>

Beispiel 3.6 Nun sind die Werte ebenso in dem Array gespeichert und abrufbar wie in Beispiel 3.5 gezeigt.
Man könnte diese Werte also folgendermaßen ausgeben
<?php
// Ausgabe der Arraywerte
echo "$arr_cdName[0] <br />"; echo "$arr_cdName[1] <br />"; echo "$arr_cdName[2] <br />2;


?>
Beispiel 3.6

Folgende Ausgabe würde entstehen:




























Abb. 3.2

Sie sehen, dass ich den echo() Befehl etwas erweitert habe. Ich fügte Anführungszeichen und den HTML Tag „<br />“ hinzu. Das ist eine Art der Formatierung, wie ich Sie eben angesprochen habe. Der HTML Tag bewirkt einen einfachen Zeilenumbruch.

Im Beispiel 3.6 sehen Sie also, dass sich nicht immer jedem Arrayindex extra den Wert zuweisen müssen. Eine durch Komata getrennte Liste reicht hier aus, wenn Sie den Befehl Array() nutzen. Achten Sie darauf, dass die Liste innerhalb von runden Klammern „( )“ steht und Stringwerte (Zeichenketten) innerhalb von Anführungszeichen.



Zweidimensionale Arrays

Nun kommen wir zu dem interessanteren Teil der Arrays. Sie dürften bemerkt haben, dass dieses Thema sehr komplex ist und es eventuell einiger Übung bedarf, bis man ein Verständnis davon hat. Aber dies sollte am Anfang ganz normal sein. Es erfordert auch ein gewissen mehrdimensionales oder räumliches Denken.

Mit zweidimensionalen Arrays sind wir nun in der Lage die komplette Tabelle in ein einziges Array zu packen. Wir fügen bei dieser Art von Array einfach einen zweiten Index hinzu. Dies könnte dann folgendermaßen aussehen.

<?php

// Zweidimensionale Array

$arr_cdSammlung[0][0] = 1; $arr_cdSammlung[1][0] = "Bravo Hits 29"; $arr_cdSammlung[2][0] = "Sampler"; $arr_cdSammlung[3][0] = 1;

$arr_cdSammlung[0][1] = 2; $arr_cdSammlung[1][1] = "Grönemeyer / Ö"; $arr_cdSammlung[2][1] = "Deutschrock"; $arr_cdSammlung[3][1] = 1;

?>

Beispiel 3.7



An diesem Beispiel können Sie sehr gut sehen, was mit zweidimensional gemeint ist. Ersetzen Sie gedanklich einfach den ersten Index durchdieTabellenüberschriften.



Assoziative Arrays

Was noch eine Möglichkeit? Aber natürlich!Die Assoziativen Arrays haben einen entscheidenden Vorteil dem „normalen“ zweidimensionalen Array gegenüber. Auch wenn assoziative Arrays nichts anderes als zweidimensionale Arrays sind. Doch mit einem entscheidenden Unterschied. Eben bat ich Sie, den ersten Index gedanklich durch den Tabellenkopf zu ersetzen. Nun machen wir das auch noch schriftlich.

<?php
// Assoziative Arrays

$arr_cdSammlung['cdNr'][0] = 1; $arr_cdSammlung['cdName'][0] = "Bravo Hits 29"; $arr_cdSammlung['cdGenre'][0] = "Sampler"; $arr_cdSammlung['cdRegalNr'][0] = 1; $arr_cdSammlung['cdNr'][1] = 2; $arr_cdSammlung['cdName'][1] = "Grönemayer / Ö"; $arr_cdSammlung['cdGenre'][1] = "Deutschrock"; $arr_cdSammlung['cdRegalNr'][1] = 1; ?>
Beispiel 3.8

So haben wir die Arrays vollkommen ausgeschöpft. Sie sehen wie komplex Sie mit Arrays arbeiten können. Wenn wir später mit Datenbanken arbeiten und mit Schleifen, werden Sie den waren Wert der Variablen kennen lernen. Dort sind diese unabdingbar. Denn Datenbanken sind nichts anders als Tabellen und diese, so haben Sie es gerade gelernt, kann man komplett in ein Array speichern und dann weiter verarbeiten. Doch dazu später mehr.

Im nächsten Teil, lernen Sie erstmals Schleifen kennen. Dort werden uns die Arrays wieder hilfreich sein. [MG]

Url zu diesem Dokument: http://newbieweb.de/index.php?templateid=print&art=artikel&id=85