PHP Kurs - Der Einstieg Im dritten Teil des PHP Kurses lernen Sie Schleifen und ihre vielfältige Anwendung auf einfache Programmierprobleme kennen und anwenden.

Mit Schleifen lassen sich schnell und elegant Probleme lösen. Eine Schleife überprüft eine Variable immer wieder auf eine Bedingung, bis diese erfüllt ist.
Um die Arbeitsweise von Schleifen schnell zu verstehen, hier nun gleich ein einfaches Beispiel.

$Zahl="5"; auf ihren Wert überprüft, und es wird dann eine entsprechende Ausgabe gemacht.

<?php
$y="0";

while ($y <="10" )
{

echo
"Die Zahl ist $y<br>\n";

$y++;
}

?>

In der ersten Zeile des Skriptes wird die Variable $y definiert. Ihr wird der Wert "0" festgelegt. Darauf folgt auch schon die Schleife, eine sogenannte "while"-Schleife.
Ihr wird eine Bedingung gegeben, in der die Variable $y mit dem Wert "10" verglichen wird. Solange $y nicht gleich 10 ist, wird der Code, der in der Schleife steht, ausgeführt.
Dieser Code gibt immer wieder den Wert der Variablen $y aus. Am Ende der Schleife wird die Variable $y um 1 erhöht. Nach dem ersten durchlauf des Skriptes hat die Variable also den Wert 1, nach dem zweiten durchlauf den Wert 2 usw. bis die Bedingung erfüllt ist.
Ist dies der Fall, dann wird die Schleife verlassen.

Das Konstrukt für eine while-Schleife sieht so aus:

while (Bedingung)
{

// Code, wobei über den Code die Bedingung wahr gemacht werden muss


}


Wenn die Bedingung aber, aus welchem Grund auch immer nicht erfüllbar ist, dann haben Sie eine Endlosschleife erschaffen. Sie läuft und läuft immer weiter, ihre Bedingung ist nie erfüllt.


Was bringt jetzt eigentlich eine Schleife?

Aus dem Beispiel wird nicht ganz klar, wozu man eine einfache Schleife benötigt. Klar ist, für ein solches Skript wie oben würden Sie eine Menge Schreibarbeit in if-Konstrukte investieren müssen, um den gleichen Effekt zu erreichen.
Doch folgendes Beispiel zeigt den Anwendungszweck in Bezug auf ein numerisches Array (also ein Array mit einem Index aus Zahlen).

<?php

$prog_sprache[0]="PHP";
$prog_sprache[1]="Perl";
$prog_sprache[2]="ASP";


$y="0";
$count=
count($prog_sprache) - 1;

while ($y <= $count)
{

echo
"Wir Programmieren mit $prog_sprache[$y]<br>\n";

$y++;
}

?>

Die Ausgabe des Skriptes ist nacheinander:

Wir Programmieren mit PHP
Wir Programmieren mit Perl
Wir Programmieren mit ASP

Der Code ist schon schwieriger. Im Teil 1 des Kurses haben Sie dieses Array bereits kennen gelernt. Die Variable $y ist wiederum unsere sogenannte Zählvariable, doch wie steht es um die Variable $count, welchen Wert hat diese.

Bei der Definierung der Variablen $count wird auf eine von PHP vordefinierte Funktion zurückgegriffen. Die Funktion count($Array) ermittelt die Anzahl der Inhalte eines Arrays. Sie ermittelt also, wieviele Zuweisungen ein Array hat. In diesem Fall sind das drei Zuweisungen, nämlich die der Namen der Programmiersprachen. Die Frage ist nun, warum wir -1 von dem Wert abziehen.
Die Erklärung ist manchen vielleicht schon klar, aber kommt erst ein wenig später.

Nachdem wir nun die Anzahl der "Programmiersprachen kennen, können wir diese in eine Bedingung einbauen. Die Schleife wird so oft durchlaufen, bis die Zählvariable den Wert von $count erreicht hat. Nach der Subtraktion von -1 ist das also 2. Insgesamt läuft die Schleife dreimal durch (von 0 bis 2). Dabei wird eine einfache Ausgabe des Arrays vorgenommen. Dies ist eigentlich auch schon die Erklärung für die Verminderung von $count um -1, da sonst die Schleife insgesamt vier mal durchlaufen würde. Bei einem numerischen Index wird immer von 0 aus gezählt. Von 0 - 2 sind insgesamt 3 Durchläufe, genauso viele Inhalte, wie im Array vorhanden sind.
Bei dem ersten durchlauf hat $y noch den Wert 0. Durch $prog_sprache[$y] wird also $prog_sprache[0] ausgegeben, und das ist nichts anderes als die Zeichenkette "PHP".
Bei dem zweiten Durchlauf ist der Wert von $y schon 1, deshalb wird $prog_sprache[1], folglich also "Perl" ausgegen, bis die Bedingung erfüllt ist.


Die Bedingung schon früher erfüllt?


Innerhalb einer Schleife können Sie eine Variable auf mehrere Werte überprüfen. Wir möchten bei dem obigen Beispiel nur herausfinden, welcher Inhalt des Arrays "Perl" ist, und mit dieser Erkenntnis die Schleife schon frühzeitig verlassen.
Es wird lediglich eine kleine if-Bedingung eingebaut, die bei jedem Durchlauf den Wert von $prog_sprache[$y] mit "Perl" vergleicht, und dann die Schleife verlässt.
Dies macht folgendes Skript:

<?php

$prog_sprache[0]="PHP";
$prog_sprache[1]="Perl";
$prog_sprache[2]="ASP";


$y="0";
$count=
count($prog_sprache) - 1;

while ($y <= $count)
{

if ($prog_sprache[$y] == "Perl")
{
echo "Wir haben Perl (-:<br>";
exit;

}
echo
"Wir Programmieren mit $prog_sprache[$y]<br>\n";

$y++;
}

?>

Der Rest des Skriptes ist wie gehabt. Die Anweisung zum frühzeitigen Verlassen des Skriptes ist exit;. Diese Methode kann ebenfalls bei drohenden Endlosschleifen angewandt werden.


Die for-Schleife


Viele Programmieranfänger haben speziell vor der for-Schleife regelrecht Angst. Sie wirkt so kompliziert, ist aber bei näheren Betrachten eigentlich leicht zu verstehen.
Dieses einfache Beispiel erzeugt dasselbe Ergebnis, wie unsere erste while-Schleife, die wir kennen gelernt haben.

for ($y="0"; $y<="10"; $y++)
{
echo "Die Zahl ist $y<br>\n";
}


Wie gesagt, der Code scheint schwieriger, doch bei genauen Betrachten lässt sich eine totale Äquivalenz entdecken. Die einzelnen Teile der for-Schleife trennen sich durch ein Semikolon. Sie stellen folgendes dar.

1. Definition der Zählvariable
2. Die Bedingung
3. Was mit der Zählvariable geschehen soll.

Und schon ist das Geheimnis der for-Schleife gelüftet! Die for-Schleife sollte so keine Probleme mehr machen. Es werden alle drei Teile, die bei der while-Schleife in verschiedenen Abschnitten definiert werden, auf einmal, in einer Zeile definiert.
Zum besseren Verständnis nun das Beispiel mit den Programmiersprachen auf die for-Schleife übertragen.

<?php

$prog_sprache[0]="PHP";
$prog_sprache[1]="Perl";
$prog_sprache[2]="ASP";


for ($y="0"; $y<=count($prog_sprache) - 1; $y++)
{

echo
"Wir Programmieren mit $prog_sprache[$y]<br>\n";

}

?>

Vielleicht ist ihnen aufgefallen, das die Definition der Variable $count jetzt komplett wegfällt. Dies ist aber kein muss. Sie können $count extern definieren, und dann nur über die for-Schleife die Variable $count in die Bedingung einbauen.

Die foreach-Schleife


Die foreach-Schleife soll unser letztes Konstrukt für den PHP Einsteigerkurs sein. Sie wurde mit PHP 4.0 neu eingeführt, und dient speziell der Ausgabe von Arrays. Der Aufbau und das Handling sind ebenfalls einfach gehalten worden. Das besondere an der foreach-Schleife ist, dass man sie auch auf mehrdimensionale Arrays anwenden kann.

Der Grundaufbau sieht so aus:

foreach ($array as $elem)
{
// Code
}

Hierbei wird für das Array $array die jeweiligen Inhalte ermittelt, und der Variablen $elem zugewiesen.
Das ganze auf unser Beispiel angewendet:


<?php

$prog_sprache[0]="PHP";
$prog_sprache[1]="Perl";
$prog_sprache[2]="ASP";


foreach ($prog_sprache as $elem)
{

echo
"Wir Programmieren mit $elem<br>\n";

}

?>

Die Ausgabe bleibt natürlich gleich. Bei jedem Durchlauf erhalt $elem einen neuen Wert, eben den in der Reihenfolge kommenden Wert.

Wie kann man nun aber den Index ermitteln?

Bei einer while-Schleife haben wir den Wert immer über den Index ermittelt. Was nun aber, wenn der Index eine Zeichenkette ist, es sich um ein assoziatives Array handelt? Nur eine kleine Änderung ist notwendig.
Hier ein Beispiel:

<?php

$user[id]="45";
$user[name]="Hans Guenter";
$user[email]="hans@guenter.net";

foreach ($user as $index=>$elem)
{


echo "$index : $elem<br>\n";

}


?>


Die Erweiterung $index=>$elem erreicht das Ziel. In der Variablen $index wird nun der Name des Index gespeichert, in $elem ist der Inhalt.

Bei einem assoziativen Array, welches vielleicht so aufgebaut ist, muss anders vorgegangen werden.

$user[45]["id"]="45";
$user[45]["name"]="Irgendwer";
$user[45]["email"]="irgendwer@was.com";


Hier muss zunächst das erste Array mit einer for-Schleife abgearbeitet werden, sodass man genau den User bzw. den Index des Arrays ermittelt, welches die gewünschten Userdaten enthält. Dieses kann dann mit einem foreach-Konstrukt abgearbeitet werden.
Dies ist eine kleine Anregung an Sie!
Ich hoffe der Kurs hat ihnen einen ersten Einstieg in die Welt des Programmierens mit PHP gegeben. Viel Erfolg!

(tf)

Bookmark setzen... These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Bloglines
  • MisterWong
  • MySpace
  • Reddit
  • SEOigg
  • Technorati
  • TwitThis
  • Y!GG
  • Google Bookmarks

Weiterführende Links: