Instrukcje umo┐liwiaj▒ dzia│anie w zale┐no╢ci od pewnych warunk≤w, daj▒ tak┐e mo┐liwo╢µ wykonania tego samego kodu kilka razy bez konieczno╢ci jego powtarzania. S▒ bez w▒tpienia jednym z najwa┐niejszych element≤w ka┐dego jΩzyka (r≤wnie┐ PHP). Poni┐ej zamie╢ci│em opis nastΩpuj▒cych instrukcji:
Instrukcje warunkowe
Zawsze, kiedy w programie zachodzi potrzeba dokonania jakiego╢ wyboru, nale┐y zastosowaµ tzw. instrukcjΩ warunkow▒, czyli chyba wszystkim znany if. Sk│adnia tej instrukcji jest nastΩpuj▒ca:
if (wyra┐enie) instrukcja1 [else instrukcja2]
Gdzie wyra┐enie to oczywi╢cie pewien warunek, kt≤ry ma zostaµ spe│niony, b▒d╝ te┐ nie. Kiedy jego wynikiem jest prawda (r≤┐na od zera), nastΩpuje wykonanie instrukcja1. Je╢li wynikiem jest fa│sz zostanie wykonana (je╢li jest podana) instrukcja2.
Instrukcja mo┐e byµ oczywi╢cie z│o┐ona i w≤wczas u┐ywamy nawias≤w klamrowych, oto przyk│ad:
if ($wiek<18) { echo "Jestes jeszcze dzieciak"; } else { echo "No... ju┐ jestes pelnoletni!"; }
W powy┐szym przyk│adzie oczywi╢cie nie konieczne by│o stosowanie klamr, poniewa┐ wystΩpowa│a tylko jedna instrukcja do wykonania. Jednak dobrze jest je robiµ (moim zdaniem), gdy┐ program staje siΩ lepiej czytelny (i w ka┐dej chwili bez ┐adnych modyfikacji mo┐emy dodaµ jeszcze jak▒╢ instrukcjΩ do warunku).
Wszystkie instrukcje zaka±czamy ╢rednikiem, nawet je╢li u┐yjemy "else"
To jest r≤┐nica miΩdzy sk│adni▒ PHP i np. Pascalem, ale jest identycznie jak w C:
if ($imie=="Karol") echo "úadne imiΩ"; else echo "Co to za imiΩ!!!";
Mamy mo┐liwo╢µ dowolnego zagnie┐d┐ania instrukcji warunkowych. Trzeba jednak pamiΩtaµ, ┐e s│owo kluczowe else ZAWSZE tyczy siΩ do ostatniej instrukcji if. Jest wiΩc dok│adnie tak jak w C/C++.
W naszych warunkach mo┐na r≤wnie┐ u┐yµ s│owa elseif. Spos≤b u┐ycia demonstruje poni┐szy przyk│ad:
if ($wiek<18) { echo "Jestes jeszcze dzieciak"; } elseif ($wiek<70) { echo "No... ju┐ jestes dorosly!"; } else { echo "Ojjj... powoli zaczynamy siΩ starzec ;)"; }
Instrukcja wyboru
Instrukcja wyboru dzia│a tak samo jak w jΩzyku C/C++. Sk│adnia jest nastΩpuj▒ca:
swich (wyra┐enie) { case warto╢µ1: instrukcja1; case warto╢µ2: instrukcja2; [default : instrukcja3;] }
Obliczana jest warto╢µ wyra┐enia i na jej podstawie wykonany zostanie odpowiedni kod, tzn. je╢li warto╢µ wyra┐enia=warto╢µ1 zostanie wykonana instrukcja1. Mo┐na r≤wnie┐ okre╢liµ instrukcjΩ default, kt≤ra ma zostaµ wykonana zawsze w≤wczas kiedy wyra┐enie jest r≤┐ne od wszystkich warto╢ci. Oto przyk│ad:
$imie="Karol"; switch ($imie) { case 'Karol': echo "Witaj mistrzu!"; break; case 'Mariusz': echo "Czesc!"; break; default : echo "Kim jestes?"; }
Instrukcje iteracyjne
Przysz│a pora na om≤wienie instrukcji iteracyjnych. DziΩki nim mo┐liwe jest wielokrotne wykonanie tego same kodu. W PHP mam a┐ trzy rodzaje ≤w instrukcji:
Instrukcja FOR
for, czyli "dla". Og≤lna jej postaµ wygl▒da nastΩpuj▒co:
for (wyra┐enie-inicjuj▒ce; warunek; wyra┐enie_modyfikuj▒ce) instrukcja;
Wyra┐enie-inicjuj▒ce ustala pocz▒tkow▒ warto╢µ naszego licznika. PΩtla trwa tak d│ugo, jak d│ugo spe│niony jest warunek i za ka┐▒ pΩtl▒ licznik zmieniany jest wedle wyra┐enia-modyfikuj▒cego oraz wykonywana jest instrukcja. PΩtlΩ mo┐na dowolnie zagnie┐d┐aµ, a instrukcja mo┐e byµ z│o┐ona (w≤wczas wstawiamy j▒ w nawiasy klamrowe). Oto przyk│ad:
for ($i=1;$i<10;$i++) echo "$i<br>";
OpiszΩ spos≤b wykonania powy┐szej linijki. Na pocz▒tku wykonywane jest $i=1. NastΩpnie echo "$i<br>"; (czyli wy╢wietli liczbΩ 1 i przejdzie do nastΩpnej linii), w kolejnym kroku wykonuje $i++ (czyli zwiΩksza $i o jeden) i jest to wykonywane tak d│ugo, jak d│ugo spe│niony jest warunek $i<10. Kolejny przyk│ad:
<html>
<head>
<title>Tabliczka mno┐enia</title>
</head>
<body>
<?
echo "<table border='3' align='center' width='80%'>";
for ($y=1;$y<=15;$y++)
{
echo "<tr>";
for ($x=1;$x<=15;$x++)
{
echo "<td align='center'>".($x*$y)."</td>";
}
echo "</tr>";
}
echo "</table>";
?>
</body>
</html>
Po wykonaniu powy┐szego programy na ekranie zostanie wy╢wietlona tabela (15x15), a w niej tabliczka mno┐enia.
Instrukcja WHILE
While oznacza "dop≤ki". Sk│adnia jest nastΩpuj▒ca:
while (warunek) instrukcja;
Jak siΩ pewnie domy╢lamy instrukcja jest wykonywana tak d│ugo, jak d│ugo warunek jest prawdziwy (r≤┐ny od zera). Z chwil▒, kiedy przyjmie on warto╢µ FALSE, pΩtla przestaje byµ wykonywana. By nie dosz│o do pΩtli niesko±czonej, w instrukcji trzeba odpowiednio modyfikowaµ zmienne tak, by kiedy╢ warunek przesta│ byµ prawdziwy. Oto prosty przyk│ad:
$i=1; while ($i<10) { echo "[BHP] Binboy HomePage<br>"; $i++; }
Instrukcja Do..WHILE
TΩ nazwΩ (do..while) przet│umaczymy jako "wykonuj...dop≤ki". Jest bardzo podobna do samego while-a. R≤┐nica polega na tym, i┐ warunek jest sprawdzany na koniec pΩtli (czyli zawsze wykona siΩ przynajmniej raz). Jej sk│adnia jest nastΩpuj▒ca:
do instrukcja while (warunek);
np.
$i=1; do echo "[BHP] Binboy HomePage"; $i++; while ($i<10);
Instrukcje steruj▒ce przebiegiem programu
Zaliczamy do nich: break, continue i return
Instrukcja przerwij - break - powoduje natychmiastowe opuszczenie pΩtli (for, while lub do..while).
Instrukcja kontynuuj - continue - powoduje skok do wyra┐enia warunkowego (while, do..while), lub zwiΩkszaj▒cego (for).
Instrukcja zwr≤µ - return - wywo│anie tej instrukcji powoduje zako±czenie wykonywania funkcji i zwr≤cenie warto╢ci podanej jako parametr do return. WiΩcej o tym powiemy w lekcji o funkcjach.