Podstawą wszystkich praktycznie skryptów są instrukcje warunkowe takie jak IF, SWITCH czy WHILE. Upraszczając - dzięki nim "coś" się stanie gdy podany warunek będzie spełniony. Oto opis poszczególnych instrukcji warunkowych:
Najprostsza instrukcja warunkowa o budowie:
IF (WARUNEK)
{
//kod który ma się wykonać przy spełnieniu warunku
}
Instrukcję tę możemy sobie tłumaczyć tak: Jeżeli (IF) warunek jest spełniony to ({}). Oto przykład kodu PHP z taką instrukcją:
<?php
$liczba = 3;
IF ($liczba == 3)
{
echo 'Podana liczba to 3';
}
Jeżeli zmienna liczba ma wartość równą 3 (znak "=" to przypisanie wartości, "==" to "znak" równości) to wyświetl tekst "Podana liczba to 3". Instrukcję można rozbudować dodając kilka nowych elementów:
<?php
IF ($liczba == 3)
{
echo 'Podana liczba to 3';
}
else
{
echo 'Podano inną liczbę niż 3';
}
Klausula "else" określa co ma się stać gdy warunek nie zostanie spełniony. Jeżeli nie potrzebujemy nie musimy dawać "else" do instrukcji. Jeżeli natomiast chcemy np. zrobić coś gdy
$liczba ma wartość 1 i coś innego gdy ma wartość np. 3 to możemy jeszcze bardziej to rozbudować:
<?php
IF ($liczba == 1)
{
echo 'foo';
}
elseIF ($liczba == 2)
{
echo 'foo';
}
elseIF ($liczba == 3)
{
echo 'foo';
}
elseIF ($liczba == 4)
{
echo 'foo';
}
else
{
echo 'Jesteśmy poza zakresem';
}
elseIF tłumaczymy jako "w przeciwnym wypadku jeżeli" tj. Jeżeli (IF) $liczba == 1 to zrób foo :) w przeciwnym wypadku jeżeli $liczba == 2 to zrób cośtam itd. Kolejnym rozwinięcie są warunki. Za jednym zamachem możemy określić kilka warunków:
<?php
$liczba = 'foo';
IF (isset($liczba) and is_numeric($liczba))
{
echo 'Zmienna liczba przechowuje wartość liczbową';
}
elseIF(isset($liczba) and !is_numeric($liczba))
{
echo 'Zmienna liczba nie przechowuje liczby';
}
else
{
echo 'Zmienna liczba nie istnieje';
}
Tutaj mamy już kilka nowości. Funkcja
isset zwróci wartość prawda jeżeli podana zmienna istnieje. Funkcja
is_numeric zwróci wartość prawda jeżeli podana zmienna przechowuje wartość liczbową. Operator "
and" oznacza "oraz" czyli pierwszy i drugi parametr muszą być spełnione. Tak więc mamy: Jeżeli
$liczba istnieje i (and) jest liczbą to "Zmienna liczba przechowuje wartość liczbową" w przeciwnym wypadku jeżeli
$liczba istnieje i nie jest liczbą "Zmienna liczba nie przechowuje liczby", jeżeli i ten warunek nie spełniony to oznacza że
$liczba nie istnieje.
UWAGA: znak ! przed is_numeric oznacza "zaprzeczenie", patrz ściągawka:
$x == $y : znak równości (czy zmienne są równą)
$x != $y : znak różności (czy zmienne są różne, dla funkcji zwracających wartość prawda/fałsz ! jest przed ich nazwą)
$x > $ y : czy $x jest większe od $y (tak samo < oraz <= oznacza większe równe, >= mniejsze równe)
"Przeciwieństwem" do
AND jest
OR czyli "lub".
<?php
IF ($liczba == 3 or !is_numeric($liczba))
{
echo 'Zmienna Liczba ma wartość 3 lub nie jest liczbą';
}
Instrukcja wyświetli "Zmienna Liczba ma wartość 3 lub nie jest liczbą" gdy jeden z warunków zostanie spełniony.
Duża ilość elseIF w instrukcji zwalnie działanie skryptu i nie wygląda za dobrze. Możemy to "naprawić" stosując inne wyrażenie warunkowe:
<?php
$liczba = 3;
switch ($liczba)
{
case 1:
echo 'mamy 1';
break;
case 2:
echo 'mamy 2';
break;
case 3:
echo 'mamy 3';
break;
case 4:
echo 'mamy 4';
break;
case 'foo':
echo 'mamy foo';
break;
default:
echo 'Mamy coś innego';
}
Jest to "inna" forma IFa z kilkoma elseIF. Instrukcja zaczyna się od "
switch ($ZMIENNA)". Następnie w nawiasie {} podajemy przypadki (case) wartości zmiennej. Jeżeli zmienna ma taką wartość to wykonany zostanie kod przypisany do tej wartości.
break; kończy wykonywanie instrukcji.
default: to odpowiednik else. Kod przypisany pod default wykona się gdy żaden z listy warunków nie zostanie spełniony.
Pętla
for wykona określoną ilość razy przypisany jej kod aż warunek pętli przestanie być prawdziwy:
<?php
for($count = 1; $count <= 10; $count++)
{
echo 'klonujemy<br />';
}
Mamy:
for(wartość początkowa; wartości dla których wykonywać; postęp). Zacznij pisać "klonujemy" gdy
$count przyjmie wartość 1 i pisz to aż
$count przestanie być mniejsza/równa 10; zwiększa wartość
$count o jeden. Należy unikać długich pętli gdyż długo się wykonują. Jeżeli po napisaniu pętli kod przypisany jej ciągle się wykonuje to znaczy że źle zdefiniowaliśmy warunek i pętla będzie działać w nieskończoność (zazwyczaj aż przekroczony zostanie maksymalny czas wykonywania skryptu).
Pętla WHILE (i DO WHILE) są prostszą wersą pętli for.
<?php
while ($count <= 10)
{
$count++;
echo 'klonujemy<br />';
}
Jako parametr podajemy tylko warunek przy którym wykonywać kod. Coś co zmieni warunek wykonywania kodu na fałsz ($count++) musi być umieszczone poza "parametrami" pętli, np. w kodzie przypisanym do wykonania.
- Dodane: 14.07.2008 przez riklaunim