PHP – ďábelské podmínky a cykly
V předchozím díle jsme se naučili zpracovávat údaje z formulářů a odeslat je pomocí funkce Mail na e-mail. Abychom našim skriptům dodali více inteligence a flexibility, v tomto díle si ukážeme, jak se v PHP používají podmínky a cykly. Podíváme se také na chybová hlášení a ladění skriptu.
Základní podmínkovou konstrukci jistě většina z vás zná z jiných jazyků. V PHP vypadá takto:
|
Zde je přehled operátorů, které můžeme v podmínce používat:
|
Důležité je si všimnout, že pro porovnávání se používají dva znaky = za sebou (pokud by byl použit pouze jeden, proběhlo by přiřazení a pokud by byla přiřazena nenulová hodnota, podmínka by byla vždy splněna). Aby bylo vše názornější, zde je několik příkladů složitějších podmínek:
|
Pokud potřebujeme provést při splnění podmínky více příkazů a/nebo chceme něco provést naopak při nesplnění podmínky, syntaxe vypadá takto:
|
K většině příkazů pro podmínky a cykly existuje alternativní zápis pomocí složených závorek. Pro if vypadá takto (v následujících dílech seriálu syntaxi se složenými závorkami nebudu používat):
|
Zde je malý příklad toho, jak může taková trochu složitější konstrukce vypadat:
|
Pokud se má některá část skriptu provádět opakovaně, využijeme příkazy while nebo for:
|
Struktura while – endwhile pracuje následovně: vždy se otestuje podmínka ve while, a pokud platí, provedou se příkazy mezi while a endwhile, poté se vše opakuje, dokud není podmínka porušena. Je třeba si dávat pozor na nekonečné cykly, i když každý skript je po určitém časovém intervalu (zpravidla 30 sekund) serverem sám násilně ukončen.
Struktura for – endfor je poněkud složitější. Příkaz for má syntaxi for (příkaz1, podmínka, příkaz2). Nejprve se provede příkaz1 a tělo cyklu (vše mezi for a endfor). Poté se provede příkaz2 a vyhodnotí se výraz. Pokud je pravdivý, opět se provede tělo cyklu a poslední krok se opakuje. Cykly je do sebe možné i vnořovat. Následující příklad vnořených cyklů nám vypíše malou násobilku:
|
Ve vnějším cyklu se postupně mění proměnná $i od 1 do 10. Protože známe komutativní zákon, necháme druhý činitel (proměnnou $j) růst od hodnoty $i do 10. V těle cyklu je pouze jeden příkaz echo, který vypisuje hodnotu součinu.
Předchozí skript už není úplně triviální, takže se nám do něj klidně může vloudit chyba. Řekněme, že za příkazem echo vynecháme středník. Místo toho, abychom byli zasvěceni do tajů malé násobilky, skript se na nás bude zlobit a vypíše nějakou takovou chybovou hlášku:
|
PHP nám označí řádek, na kterém je chyba (v tomto případě řádek 15). Řádky se číslují odshora počínaje prvním. Na patnáctém řádku je první z příkazů endfor – středník sice chybí o řádek výše, ale teprve tento příkaz PHP zmate. Informace o čísle řádku s chybou je většinou jediná informace, kterou nám PHP poskytne, text chybového hlášení se většinou omezí na lakonické Parse error.
Je třeba si zapamatovat, že chyba může být klidně o několik řádků výše. S trochou trpělivosti ale většinou není problém syntaktické chyby odstranit, horší je to s chybami logickými (tj. když skript sice pracuje dobře, ale dělá něco jiného, než má). V tom případě nám nezbývá nic jiného, než celý náš výtvor prošpikovat příkazy echo, které nám budou vypisovat obsahy jednotlivých proměnných. Pak budeme odsouzeni k pečlivému zkoumání, kdeže se obsahy proměnných začínají odchylovat od našeho záměru.
Shrnutí anebo co si je třeba pamatovat
- Jako podmínka se používá klasická konstrukce if – then – else známá z řady dalších jazyků.
- Operátor přiřazení je =, operátor rovnosti je ==.
- Pro opakované provádění příkazů využijeme cykly tvořené pomocí while a for.
- Většina příkazů pro podmínky a cykly má alternativní syntaxi (zápis pomocí složených závorek), ta však většinou není příliš užitečná.
- Pokud se chceme v našich výtvorech vyznat, měli bychom např. těla podmínek a cyklů odsazovat a používat dostatek poznámek.
- U syntaktických chyb nám PHP ohlásí číslo řádku, se kterým není spokojeno. Mnohem horší jsou však chyby logické.
V příštím díle se naučíme ukládat data do souborů a ukážeme si, jak naprogramovat on-line test s real-time statistikami úspěšnosti dosavadních návštěvníků.
Starší komentáře ke článku
Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.
Mohlo by vás také zajímat
-
Praktické rady na zabezpečení redakčního systému WordPress
27. února 2023 -
OpenAI představilo novou funkci ChatGPT Search
6. listopadu 2024 -
Aukce CZ domén: Jak vydražit expirovanou CZ doménu?
12. června 2024
Nejnovější
-
Výkonný a kompaktní: ASOME Max Studio s výjimečným poměrem cena/výkon
11. listopadu 2024 -
Šokující data od Microsoftu: Kyberútoky rostou o stovky procent!
8. listopadu 2024 -
Chcete jedinečnou doménu? Objevte koncovky FOOD, MEME a MUSIC!
7. listopadu 2024 -
OpenAI představilo novou funkci ChatGPT Search
6. listopadu 2024