Mit PHP HTML generieren |
|
Arrays
Arrays sind Variablen, die ganze Wertelisten enthalten können. In diesen Listen kann jede Zeile durch eine Nummer (Index) referenziert werden.
Durch Angabe des Array-Namens und des Index kann das Array belegt bzw. ausgelesen werden.
Arrays werden später für die Datenbankabfragen noch sehr wichtig werden.
Achtung: Die Zählung beginnt immer bei 0 !
Belegen jeder einzelnen Arrayzeile:
$Adresse[0] = „Hamburg“;
$Adresse[1] = „Berlin“;
$Adresse[$i] = $xyz;
Mit leeren Klammern, wird die nächste freie Zeile im Array belegt:
$Adresse[] = $Wuppertal;
Auslesen einer einzelnen Arrayzeile:
$x = $Adresse[1];
echo $x;
Definition eines kompletten Arrays:
$myArray = array („Paris“,
München“, „London“);
mehrdimensionale Arrays
Arrays können mehrdimensional sein, indem in die einzelnen Zeilen wiederum Arrays eingefügt werden. Ein zweidimensionalea Array sähe dann so aus:
$myArray = array („0“,
$myArray2, „7“);
Die Ausgabe eines Feldes aus dem zweidimensionalen Array:
$erg = $myArray[1][3];
Assoziative Arrays
In assoziativen Arrays wird nicht über den Index, sondern über Feldnamen auf die Daten zugegriffen:
$kontakt["Name"] = „Siegert“;
$kontakt["Tel"] = „78-1248“;
echo $kontakt["Name"];
Die alternative Definition mit dem Schlüsselwort Array:
$kontakt = array(„Name“=>“Siegert“, „Tel“=>“78-1248“);
Arrayfunktionen
Funktion |
Beschreibung |
$anz = count($array); |
Liefert die Anzahl der Arrayelemente. |
reset(), prev(), pos(), current(), next(), end() |
Setzt den internen Arrayzeiger. |
$erg = key($array); |
Gibt den Schlüssel des aktuellen Elements bei assoziativen Arrays aus. |
unset($arr); |
leert ein Array |
PHP kennt noch weitere Funktionen z.B. zum Sortieren von Arrays etc..
Schleifen
Um Arrays nun sinnvoll verwenden zu können, brauchen wie Schleifen. Mit ihnen kann Element für Element eines Arrays abgearbeitet werden.
foreach
foreach($array as $element) {}
foreach($array as $key => $element) {}
foreach ist ein spezielles Schleifenkonstrukt für Arrays.
Zunächst wird ein interner Zähler auf das erste Element gesetzt. Dann wird das Array schrittweise durchlaufen und jedes Element an $element übergeben. Die Schleife wird automatisch beendet, wenn das Array einmal vollständig durchlaufen ist.
Bei verschachtelten Arrays sähe das dann so aus:
foreach($array as $element) {
foreach($element as $element2) {
...
}
}
while
…solange bis ein bestimmter Zustand
eintrifft… Der Test (boolsche Bedingung) wird hier zu Beginn durchgeführt!
Das Beispiel gibt alle ACSII Zeichen von 32 bis 126 aus.
$i = 32;
while ($i < 127) {
echo chr($i).“|“;
$i++;
}
do-while
…solange bis ein bestimmter Zustand
eintrifft… Der Test findet hier erst nach dem ersten Durchlauf statt!
Das Beispiel gibt alle ACSII Zeichen von 32 bis 127 aus.
$i = 32;
do {
echo chr($i).“|“;
$i++;
}
while ($i < 127)
for
Diese Schleife arbeitet mit einem Zähler. Nach dem Schlüsselwort for folgt eine Klammer mit drei durch Semikolon getrennte Anweisungen. Der Zähler ist eine Variable (hier $i), die sich ausgehend von einem Startwert (1. Anweisung) solange verändert (3. Anweisung), solange die Bedingung (2. Anweisung) wahr ist.
for ($i = 32; $i<127; i++;) {
echo chr($i).“|“;
}
Schleifenfunktionen
Die Schleifenfunktionen können in jedem Schleifentyp angewendet werden.
continue [Schleifenanzahl] |
erzwingt den nächsten Schleifendurchlauf |
break [Schleifenanzahl] |
bricht die Schleife ab |
exit [(Zeichenkette)] = bricht das aktuelle Skript ab
Anwendungen
Passwortabfrage mit Schleife
<?
# Erzeugen eines zweidimensionalen Arrays
$nutzer1 = array("Paul","123456");
$nutzer2 = array("Ralf","654321");
$nutzer3 = array("Hein","Blöd");
$gesamt = array($nutzer1,$nutzer2,$nutzer3);
//-----------------------------
$login = false;
for ($i = 0; $i< count($gesamt); $i++) {
if ($kennung==$gesamt[$i][0]
&& $passwort==$gesamt[$i][1])
$login = true;
}
if ($login)
echo "richtig";
else
echo "falsch";
?>
Erzeugen einer HTML-Tabelle
Diese Technik wird später oft in Zusammenhang
mit Datenbanken gebraucht.
<?
$nutzer1 = array("Paul","123456");
$nutzer2 = array("Ralf","654321");
$nutzer3 = array("Hein","Blöd");
$gesamt = array($nutzer1,$nutzer2,$nutzer3);
//----------------------------- MIT FOR-SCHLEIFE
echo "<table border=1>\r";
for ($i = 0; $i< count($gesamt); $i++) {
echo "<tr><td>".$gesamt[$i][0]."</td><td>".$gesamt[$i][1]."</td></tr>\r";
}
echo "</table>\r<hr>\r";
//----------------------------- MIT WHILE SCHLEIFE
echo "<table border=1>\r";
$i=0;
while ($i < count($gesamt)) {
echo "<tr><td>".$gesamt[$i][0]."</td><td>".$gesamt[$i][1]."</td></tr>\r";
$i++;
}
echo "</table>\r<hr>\r";
//----------------------------- MIT DO-SCHLEIFE
echo "<table border=1>\r";
$i=0;
do {
echo "<tr><td>".$gesamt[$i][0]."</td><td>".$gesamt[$i][1]."</td></tr>\r";
$i++;
} while ($i < count($gesamt));
echo "</table>\r<hr>\r";
//-----------------------------
?>
Erzeugen von Menues
Hier eine kleine praktische Funktion, die für myStudy entwickelt wurde.
<?
Parameter:
$values = die Values. Kˆnnen auch gleich $liste sein
$liste = Array aus Eintr?gen
$active = Aktiver array Eintrag, Nicht die Feldnummer, sondern
der INHALT muss übereinstimmen!!!
$selname = name des Select PopUps
Aufruf:
<?
include("do_select.php");
$liste = array ("Januar","Februar","M‰rz","April","Mai","Juni","Juli","August","September","Oktober",
"November","Dezember");
do_select($liste,$active,$selname);
?>
Musterarrays:
$liste = array ("Januar","Februar","M‰rz","April","Mai","Juni",
"Juli","August","September","Oktober","November","Dezember");
$liste = array ("1","2","3","4","5","6","7","8","9","10","11","12");
$liste = array ("1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17",
"18","19","20","21","22","23","24","25","26","27","28","29","30","31");
$liste = array ("Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","Sonntag");
*/
function do_select($values,$liste,$active,$selname)
{
echo "<select name=".$selname."
size=1>";
$len = count($liste);
for ($i=0; $i < $len; $i++) {
echo "<option value=\"".$values[$i]."\"";
if ($liste[$i] == $active) echo " selected";
echo ">".$liste[$i]."\r";}echo "</select>";
}
?>