- Základní údaje
- Kategorie: PHP
- Zobrazení: 351
Čísla v PHP
PHP podporuje čísla ve dvojí podobě – celá (dat. typ integer) a reálná čísla (dat. typ float).
Celá čísla
Celá čísla jsou jakákoliv čísla, která nemají desetinnou čárku. Příkladem celých čísel může být např. -7, 9, 145, 2 458, -128 523 atd. Celá jsou ovšem v PHP pouze v rozsahu od -2 147 483 648 do +2 147 483 647. Jakmile se bude jednat o číslo mimo tento rozsah, bude se automaticky jednat o číslo reálné. Zápis celého čísla – 3 (jakmile nenapíšete desetinnou tečku v zápisu čísla, jedná se vždy o číslo celé) POZOR: pokud zapíšete číslo takto – 0x nebo 0X bude to považováno za číslo zapsané v šestnáctkové soustavě. Pokud zapíšete číslo takto – 017, bude to považováno za číslo zapsané v osmičkové soustavě.
Reálná čísla
Reálná čísla jsou čísla, která mohou, ale nemusí obsahovat desetinnou čárku. Na rozdíl od matematiky mají reálná čísla v PHP omezenou přesnost (tedy při výpočtech se zaokrouhlují). V manuálu pro PHP se uvádí, že mají přesnost na 16 číslic. Příkladem pro reálná čísla je např. 9,15 nebo 159,1235 atd. Zápis reálného čísla – 3.0 (pro desetinnou čárku se v zápisu PHP používá tečka) Zápis reálného čísla ve vědecké notaci – číslo, které má za sebou písmeno malé „e“ nebo velké „E“, za kterým pokračuje číslo zvané exponent.
<?php
echo 12e3;
//vypíše se 12000
?>
Proč se vůbec tedy používají celá i reálná čísla, když by vlastně stačila čísla reálná?
- Výpočty s celými čísly bývají o něco rychlejší (tato vlastnost se projeví jen u velmi složitých výpočtů)
- Celá čísla jsou zcela přesná, nezaokrouhlují se, u reálných dochází k zaokrouhlování, tedy nepřesnostem
Matematické výpočty s čísly
PHP umí jak základní, tak složitější matematické operace. Pro začátek jeden z příkladů:
<?php
echo 12 + 6
//vypíše 18
?>
Jak už bylo zmíněno, mezi základní datové typy patří také čísla. PHP podporuje dva základní číselné typy a to celá a reálná čísla. Základní vlastností je to, že se s nimi dá počítat. Nabídka matematických schopností PHP jazyka nevybočuje z toho, co nabízí většina programovacích jazyků. Zápis matematických operací vychází z jazyka C. V PHP můžete běžně sčítat, odčítat, násobit a dělit. Základní operace vypadají následovně:
+ | sčítání |
- | odčítání |
* | násobení |
/ | dělení |
% | zbytek po dělení |
Příklad základních matematických operací:
<?php
echo 10 * 2 + 4;
// Vypíše: 24
?>
Dělení čísel Dělení čísel má svá přesná pravidla. Pokud dělíme dvě čísla a výsledkem bude jiné číslo než celé, bude výsledným datovým typem tohoto čísla reálné číslo, tedy číslo s desetinnou čárkou:
<?php
$a = 10 / 5;
var_dump($a);
echo "</br>";
// Výsledkem je celé číslo, vypíše int(2)
$b = 10 / 3;
var_dump($b);
// Výsledkem je reálné číslo, vypíše float(3.3333333333333)
?>
Pozn.: int a float jsou výrazy pro vyjádření datového typu (int = celé číslo, float = reálné číslo). Více o označování datových typů později.
Operace inkrementace a dekrementace
Jedná se o speciální matematické operace, které zvětšují, respektive zmenšují hodnotu proměnné o jednu. Princip je v podstatě jednoduchý - inkrementace (++) způsobí zvětšení hodnoty proměnné o jednu a naopak dekrementace (--) způsobí zmenšení hodnoty proměnné o jednu. Zápis může vypadat takto: $x++ ale také ++$x Oba zápisy jsou možné, ale každý se chová poněkud jinak. V prvním případě - $x++ vydá takovýto výraz nejprve stav proměnné x a potom k ní přičte jedničku. Tedy vydá číslo 3. Ve druhém případě - ++$x se nejprve k proměnné x přičte jednička a pak výraz vydá stav této proměnné, tedy číslo 4. Viz následující příklad:
<?php
$x = 3;
$y = $x++;
echo $y;
//Vypíše 3
echo "</br>";
echo $x;
//Vypíše 4
?>
Přiřazování a jeho další možnosti
Přiřazování zde již bylo probíráno z počátku. Ovšem existují další varianty než jen obyčejné přiřazení hodnot do proměnné.
- Přiřazení hodnoty do několika proměnných naráz: $a = $b = $c = 25; Po takovém přiřazení se do všech tří proměnných přiřadí hodnota 25
- Kombinované přiřazení: $a = ($b = 3) + 4; V tomto případě se nejdříve přiřadí hodnota 3 proměnné $b, následně se tato hodnota přičte k číslu 4 a tento výsledek se přiřadí proměnné $a.
- Přiřazení s operací: $a = $a + 3; Zde se proměnné $a přičte číslo 3. PHP však umožňuje zkrácený zápis: $a += 3;
- Následující tabulka obsahuje několik příkladů normální a zkrácených zápisů přiřazení proměnné s operací:
Normální zápis | Zkrácený zápis |
$a = $a + 33 | $a += 33 |
$a = $a - 5 | $a -= 5 |
$a = $a * 10 | $a *= 10 |
$a = $a / 8 | $a /= 8 |
$a = $a % 3 | $a %= 3 |
- Základní údaje
- Kategorie: PHP
- Zobrazení: 299
Činnost většiny programů (a to nejen v PHP) je řízena tzv. podmínkou. Podmínka je jednoduše řečeno zápis, který PHP vyhodnotí a zjistí, zda je pravdivý nebo ne. Další program pak může pokračovat a to jak pro stav, kdy je podmínka pravdivá (je splněna) či naopak nepravdivá (není splněna).
Podmíněný příkaz if
Podmínky v PHP jsou řešeny pomocí příkazu if. Dělíme jej na úplný a neúplný.
Úplný podmíněný příkaz if
Úplný podmíněný příkaz je takový, který řeší nejen stav, kdy je daná podmínka splněna, ale i stav, kdy podmínka není splněna. Celá konstrukce příkazu if vypadá zjednodušeně takto:
if (podmínka)
příkaz který se má vykonat pokud je podmínka pravdivá
else
příkaz který se má vykonat pokud podmínka není pravdivá
Jak je z příkladu patrno, podmínka, která se má vyhodnotit, je za slůvkem if (volný překlad „pokud“) v kulatých závorkách. Může to být jakýkoliv výraz, kterému PHP rozumí. Může to být nějaká hodnota, třeba číslo, nebo řetězec, proměnná nebo matematická operace, apod. Po vyhodnocení podmínky s výsledkem „pravda“ se vykoná nějaký další krok, umístěný hned na dalším řádku. Pokud však výsledkem vyhodnocení podmínky je nepravda (podmínka není splněna), vykoná se to, co následuje za slovem else (volný překlad „jinak“). Příklad:
<?php
if (10 > 2)
echo 'Podmínka je pravdivá';
else
echo 'Podmínka není pravdivá';
?>
V tomto případě se po spuštění vypíše text Podmínka je pravdivá, protože je pravda, že číslo 10 je větší než 2. Pokud si zkusíte zaměnit obě čísla (tedy – 2 > 10), vypíše se text Podmínka není pravdivá. Pozn.: všimněte si, že se za závorkami nepíše středník!
Neúplný podmíněný příkaz if
Velmi často se v praxi stává, že nepotřebujeme celou funkčnost konstrukce if. V mnoha případech nám stačí, aby se v případě pravdivé podmínky něco vykonalo a v případě nepravdivosti nevykonalo nic. V tomto případě můžeme zcela vynechat část konstrukce else.
<?php
echo 'Toto je kontrola na pravdivost. Pokud bude výsledkem nepravda, nic se nevypíše.';
// Tento text se vypíše vždy. V tomto případě pouze informuje o činnosti programu
echo '<br />';
// zde se zařídí, že se vše následující vypíše na nový řádek
if (3 > 2)
//toto je samotná podmínka, která se vyhodnocuje
echo 'Podmínka je pravdivá';
//pokud bude pravdivá, tak se tento text vypíše. Pokud ne, nic dalšího se nestane
?>
V uvedeném příkladu se to, co je součástí konstrukce if (všimněte si, že konstrukce if končí až se středníkem!), tzn. text „Podmínka je pravdivá“ vypíše, protože podmínka byla splněna tedy je pravdivá. Pokud však tato podmínka pravdivá nebude, není zde definován příkaz else a tak se nevykoná nic. Zkuste si nyní vyzkoušet tento příklad tak, že zaměníte obě číslice 3 a 2.
Operátory v podmínce
O operátorech bude zmínka v následující kapitole. Tady je jeden příklad:
<?php
$a = 10;
$b = 0;
if ($b != 0)
// Nebude-li proměnná b rovna nule, pak proveď následující výpočet
{
$vysledek = $a / $b;
echo('Výsledek dělení: ' . $vysledek);
}
if ($b == 0)
echo('Nulou nelze dělit!');
?>
Zobrazení času s kombinovanou podmínkou:
<?php
$presnycas = date('H:i');
$hodina = date('H');
echo ('Na serveru je přesně: '.$presnycas.'</br>Tak že ');
if ($hodina>0 and $hodina<6)
{
echo 'je po půlnoci.';
}
else if ($hodina>6 and $hodina<12)
{
echo 'je dopoledne.';
}
else if ($hodina>12 and $hodina<18)
{
echo 'je odpoledne.';
}
else if ($hodina>18)
{
echo 'je večer.';
}
?>
Ukázka načtení obsahu pokud je splněna podmínka (správné heslo):
<form action="" method="post">
Zadej heslo: <input type="password" name="heslo"><br />
<input type="submit" value="Odeslat heslo" />
</form>
<?php
$heslo = $_POST['heslo'];
echo "Následující obsah se ukáže jedině pokud znáš správné heslo.";
if ($heslo == 'tajne-heslo')
echo '<h1>Tady je tajný obsah stránky</h1>';
else
echo '<p>Neznáš heslo, neuvidíš tajný obsah...</p>';
?>
Funkce die
V souvislosti s příkazem if se velmi často používá funkce die, která slouží k okamžitému skončení skriptu PHP. Před tím, než se skript PHP ukončí, se ještě naposledy vypíše nějaká zpráva, která je umístěna uvnitř funkce die:
die('Ukončení programu...');
Často se tato funkce používá jako reakce na nějakou chybu (příklady později).
- Základní údaje
- Kategorie: PHP
- Zobrazení: 303
Operátorem se nazývá zápis matematické operace. Při použití se ptáme, zda je jedno číslo menší než druhé nebo např. zda se tyto čísla rovnají apod.
Příklad | Kdy je podmínka pravdivá |
$a == $b | Hodnota proměnné a je rovna hodnotě proměnné b |
$a != $b | Hodnota proměnné a není rovna hodnotě proměnné b |
$a <> $b | |
$a < $b | Hodnota proměnné a je menší než hodnota proměnné b |
$a <= $b | Hodnota proměnné a je menší nebo rovna hodnotě proměnné b |
$a > $b | Hodnota proměnné a je větší než hodnota proměnné b |
$a >= $b | Hodnota proměnné a je větší nebo rovna hodnotě proměnné b |
Příklad:
<?php
$a = 100;
// Zkuste zadat i jiné číslo.
if ($a == 100)
//pokud je proměnná rovna číslu 100, pak se vypíše následný text
echo 'Proměnná $a je rovna číslu 100.';
?>
Datový typ boolean Když PHP pracuje s podmínkami, zajímá ho vlastně jen jedno: zda je podmínka pravdivá nebo nepravdivá. Používá k tomu hodnoty true – pravda a false – nepravda. Tomuto typu dat říkáme logický datový typ – v PHP boolean. Pro ilustraci jeden příklad, kdy se hodnota vypíše:
<?php
$a = (3 != 4);
// Do proměnné a se uloží výsledek vyhodnocení podmínky, zda se číslo 3 nerovná číslu 4
var_dump($a);
// Vypíše bool(true)
?>
Jak již bylo napsáno, funkce var_dump vypisuje informaci o typu dat i její hodnotu (diagnostická funkce). Tak že v tomto případě je to typ dat bool (takto se označuje logický datový typ) a hodnota, tedy true (neboť je pravda, že 3 není rovno 4). Operátory porovnávání hodnot s kontrolou typu Kromě základních operátorů, které byly vyjmenovány v předchozí kapitole, PHP používá ještě dva speciální nejen pro porovnání hodnoty, ale zároveň také pro porovnání typu těchto dat:
$a === $b | Hodnota proměnné a je rovna hodnotě proměnné b a navíc jsou stejného typu |
$a !== $b | Hodnota proměnné a není rovna hodnotě proměnné b nebo nejsou stejného typu |
Rozdíl mezi běžným porovnáváním a porovnáváním s kontrolou typu dat je vidět na dalším příkladu:
<?php
var_dump(1.0 == 1);
// Podmínka je pravdivá, protože reálné číslo 1.0 se rovná celému číslu 1.
// Vypíše se bool(true)
echo '<br>';
// Zajistí, aby se další výpis vypsal na další řádku.
var_dump(1.0 === 1);
// Podmínka je nepravdivá, protože 1.0 a 1 nejsou shodné typy.
// Číslo 1.0 patří do typu reálných čísel a číslo 1 patří do typu celých čísel.
?>
Porovnávání řetězců Porovnávání čísel není nic složitého. Ovšem pokud potřebujeme porovnat řetězce (tedy text), je situace o něco složitější. PHP k tomuto účelu využívá tzv. tabulku ASCII (American Standard Code for Information Interchange). Každému znaku je přiřazen nějaký číselný kód (např. A má přiřazeno 65, B má 66, atd…). Kompletní ASCII tabulku najdete např. na adrese: http://cs.wikipedia.org/wiki/ASCII Postup porovnávání řetězců:
- Začnou se porovnávat znaky obou řetězců od začátku
- Nejdříve se porovnají první znaky obou řetězců, pak druhé, třetí atd.
- Jakmile se narazí na první rozdíl nebo jeden z řetězců skončí, je rozhodnuto.
- Pokud se při porovnávání řetězců narazí na konec jednoho z nich, je ten kratší menší než ten delší.
Podle tabulky ASCII platí, že libovolné velké písmeno je menší než libovolné malé písmenko. Ukázky porovnávání řetězců:
První řetězec | Druhý řetězec | Výsledek porovnání |
'abc' | 'abx' | První řetězec je menší než druhý |
'XX' | 'xx' | První řetězec je menší než druhý |
'sova' | 'sova' | Oba řetězce jsou shodné |
'xy' | 'xyz' | První řetězec je menší než druhý |
Složitější porovnávání: Následující příklad ukazuje porovnávání hodnot s kontrolou typu:
<?php
var_dump ('xy' === 'xyz');
// Vypíše bool(false)
?>
Výsledkem je výpis bool(false) Porovnávání kombinovaných řetězců: Řetězce se porovnávají poněkud složitěji. PHP se totiž nejdříve podívá, jestli jdou oba řetězce převést na číslo. Pokud ano, porovná je jako čísla. Pokud minimálně jeden nejde převést na číslo, porovná je jako texty. Příklad:
<?php
var_dump('30' == '+30');
// Podmínka je pravdivá, protože PHP porovná řetězce jako čísla, vypíše se tedy bool(true)
echo '<br>';
// Zajistí, aby se další výpis vypsal na další řádek.
var_dump('30x' == '+30x');
// Podmínka není pravdivá, protože PHP porovná řetězce jako texty, vypíše se tedy bool(false)
?>
Ukázky porovnávání složitějších řetězců: Pozn.: řetězce jsou „kousky“ textu, řetězec poznáme podle uvozovek nebo apostrofů.
Podmínka | Výsledek podmínky |
'+10.0' == '10' | pravdivá (porovnávají se jako čísla) |
'2' == '2a' | nepravdivá (porovnávají se jako řetězce) |
'abc' != 'xyz' | pravdivá (porovnávají se jako řetězce) |
'8' == '+8' | pravdivá (porovnávají se jako čísla) |
Porovnávání řetězce s číslem Pokud PHP porovnává řetězec s číslem, chová se jednoznačně tak, že převede řetězec na číslo a pak provádí porovnání. Např.:
<?php
var_dump('100' > 40);
// Výsledkem je pravda, protože PHP zde porovnává jakoby se jednalo o dvě čísla.
// Tedy zjišťuje, zda je číslo 100 větší, než číslo 40. Vypíše se tedy bool(true)
?>
Převádění řetězce na číslo provádí PHP tak, že se „podívá“ na první znak. Pokud zde nenajde číslo, výsledkem je číslo nula (0). Výjimku tvoří znaky + a -. Ty fungují jako v matematice. Ilustrační příklady převodu řetězce na číslo:
Řetězec před převodem | Výsledek po převodu PHP na číslo |
"10slonů" | 10 |
'postel' | 0 |
'1.2 m' | 1.2 |
'333 stříbrných stříkaček' | 333 |
"9e2" | 900 (zápis 9e2 je zápis reálného čísla ve vědecké notaci) |
Nejvíce se převod řetězce na čísla projeví při matematických výpočtech:
Zápis | Výsledek |
1 + "1 pes" | 2 |
'1.2 kg' – '0.8 kg' | 0.4 |
8 * "lev" | 0 |
0 + "3e4xxx" | 30000 (zápis 3e4 je zápis reálného čísla ve vědecké notaci) |
Další ukázky porovnávání řetězců s čísly:
Podmínka | Výsledek podmínky |
'+1' > 0 | pravdivá (řetězec '+1' se převede na jedničku) |
’23 psů' == 23 | pravdivá (řetězec '23psů' se převede na číslo 23) |
'-2abc' > 10 | nepravdivá (řetězec '-2abc' se převede na číslo -2) |
0 != 'cihla' | nepravdivá (řetězec 'cihla' se převede na nulu) |
- Základní údaje
- Kategorie: PHP
- Zobrazení: 377
Často se stává, že potřebujeme kombinovat více podmínek dohromady. Pro tyto účely existují v PHP tzv. logické operace. Logická operace vyhodnocuje vždy hodnotu ano či ne, resp. true nebo false, nebo také jedničku či nulu. Logická negace (!) Jedná se o nejjednodušší operaci, tedy obrácení podmínky. Provádí vlastně jen to, že z pravdivé podmínky udělá nepravdivou a naopak. V PHP se logická negace zapisuje tak, že podmínce přiřadíme znak vykřičník - !
<?php
var_dump(10 > 20);
// Tato podmínka je nepravdivá. Vypíše: bool(false)
echo '<br>';
// Zajistí, aby se další výpis vypsal na další řádku.
var_dump(!(10 > 20));
// Podmínka je pravdivá, protože je použita operace negace, která otočila pravdivost podmínky.
// Vypíše: bool(true)
?>
Podmínku, kterou chcete obrátit (negovat) je vždy dobré umisťovat do závorek. Logické operace and a or Tyto logické operace slouží ke spojení dvou podmínek tak, aby se výsledek tvářil jako jedna podmínka. Obě operace se liší tím, jak vypočítavají výslednou hodnotu podmínky v závislosti na obou původních podmínkách, ze kterých jsou složeny. Logickou operaci and lze jinak také vyjádřit slovním spojením „a zároveň“. Tato operace považuje dvě podmínky za pravdivé jedině tehdy, pokud jsou obě pravdivé. Oproti tomu logické operaci or (nebo) stačí, aby alespoň jedna ze dvou podmínek platila.
Logická operace and |
|
Logická operace or |
||||
Podmínka 1 |
Podmínka 2 |
Výsledek |
Podmínka 1 |
Podmínka 2 |
Výsledek |
|
pravda | pravda | pravda | pravda | pravda | pravda | |
pravda | nepravda | nepravda | pravda | nepravda | pravda | |
nepravda | pravda | nepravda | nepravda | pravda | pravda | |
nepravda | nepravda | nepravda | nepravda | nepravda | nepravda |
Příklad s logickou operací and:
<?php
$znamka = 1;
// Zde zadáme školní známku. Vyzkoušejte si sem zadávat různá čísla.
var_dump( $znamka >= 1 and $znamka <= 5 );
// Podmínka je pravdivá, pokud je v proměnné $znamka uložena platná školní známka.
?>
Pokud budete do proměnné místo současné jedničky zadávat známky jedna až pět, bude stále výsledkem pravda. Jakmile zadáte známku nižší než jedna nebo vyšší než pět, stane se minimálně jedna ze dvou porovnávaných podmínek nepravdivou a tím pádem celý výsledek funkce var_dump bude nepravda. Příklad s logickou operací or:
<?php
$a = 2;
var_dump($a > 10 or $a == 2);
// Výsledek je pravdivá podmínka, protože alespoň jedna podmínka je pravdivá. Vypíše: bool(true)
?>
Dvojí zápis logické operace and a or Kromě klasických slov and a or můžete v PHP použít také zápis && (pravý Alt+C) a || (pravý Alt+W, programátoři tento znak nazývají „roura“). Tak že např. tyto dva zápisy jsou totožné:
$a > $b and $a != 3
//stejné jako:
$a > $b && $a != 3
I když jsou obojí zápisy možné, je mezi mini nepatrný rozdíl a to v tzv. prioritě (přednosti). Slova and a or mají tzv. nižší – příznivou prioritu, obvykle odpovídající programátorovým záměrům. Obecně je doporučováno raději používat právě tyto slovní vyjádření. Neúplné vyhodnocování logických výrazů pomocí and a or PHP se obecně snaží postupovat co nejúsporněji. Ctí zásadu „zdravé lenosti“. Právě v případě logické operace and je to velmi zřejmé. Jak již bylo napsáno, je u logické operace and potřeba k pravdivému výsledku, aby obě dvě části podmínky byly pravdivé. V každém jiném případě bude výsledek nepravdivý. Vysvětlení je v následujícím příkladu:
<?php
$a = 1;
$b = 2;
$c = 20;
$d = 20;
var_dump ($a > $b and $c == $d);
// Vypíše: bool(false)
?>
PHP postupuje tak, že jakmile zjistí, že je první část podmínky nepravdivá (není pravda, že proměnná a je větší než proměnná b), nemusí se již vůbec zabývat tím, co je ve druhé části podmínky (tedy to, že je proměnná c rovna proměnné d). Touto částí se již PHP vůbec nezabývá. Tím se skripty nepatrně zrychlují. V našem případě to nebude zcela jistě patrné, ovšem u složitějších programů to může hrát významnou roli. Tento způsob postupu se nevyužívá jen kvůli rychlosti zpracování, ale také z jiných důvodů, kdy je např. na proměnné navázán další složitější skript apod. (viz dále).
- Základní údaje
- Kategorie: PHP
- Zobrazení: 311
Cykly jsou konstrukce, které umožňují vykonávat stejné nebo podobné příkazy vícekrát po sobě. Cykly se používají velmi často a nedá se bez nich skoro napsat žádný rozumný skript. Součástí cyklu je i podmínka, která vyhodnocuje, kdy má již provádění cyklu skončit. Někdy potřebujeme, aby se určité cykly opakovaly po určitý počet opakování, třeba desetkrát, Jindy můžeme chtít, aby se cyklus opakoval po určitý čas, další variantou může být např. požadavek, aby cyklus neustále vypisoval určená data z databáze, než se vypíšou všechny apod. Proto existují v PHP pro různé varianty cyklů různé konstrukce:
- cyklus while
- cyklus do while
- cyklus for
- konstrukce switch
- cyklus foreach (viz kapitola Pole v PHP)
Cyklus while Je to nejjednodušší varianta cyklu. Základní tvar je:
while (podmínka)
příkaz_který_se_bude_cyklicky_opakovat;
Princip:
- Otestuje se podmínka. Pokud není pravdivá, cyklus while končí a PHP pokračuje za cyklem while
- Pokud je podmínka pravdivá, vykoná se příkaz a cyklus se opakuje.
Jinak řečeno, smyslem cyklu while je neustále dokola opakovat příkaz, dokud platí podmínka. Příkaz se však nemusí provést ani jednou. To v případě, že hned na začátku po testování je podmínka nepravdivá. Příklad cyklu while:
<?php
$i = 1;
// Proměnné $i je přiřazeno číslo 1
while ($i <= 5)
{
echo $i,' ';
// Vypiš číslo uložené v proměnné $i a pak vypiš mezeru, aby čísla nebyla nalepená hned na sobě.
++$i;
// Inkrementace proměnné $i, tedy zvětšení čísla o jedničku.
}
?>
Tento příklad vypisuje čísla od jedné do pěti. Příkaz break v cyklech Existuje možnost či potřeba přerušit provádění cyklu v určitém okamžiku. K tomuto účelu existuje příkaz break. Jakmile PHP narazí na tento příkaz, okamžitě cyklus předčasně ukončí:
<?php
$i = 1;
// Proměnné $i je přiřazeno číslo 1
while ($i <= 5)
{
if ($i > 2)
break;
// Pokud bude proměnná $i větší než dvě, vykonej příkaz break
echo $i,' ';
// Vypiš číslo uložené v proměnné $i a pak vypiš mezeru, aby čísla nebyla nalepená hned na sobě.
++$i;
// Inkrementace proměnné $i, tedy zvětšení čísla o jedničku.
}
?>
Cyklus do while Je velmi podobný cyklu while. Jediný rozdíl je v umístění podmínky, která se testuje.
do
příkaz_který_se_bude_cyklicky_opakovat;
while (podmínka);
Princip je tedy jednoduchý:
- Vykoná se příkaz
- Otestuje se podmínka. Pokud je pravdivá, pokračuje cyklus znovu od začátku
Na rozdíl od cyklu while se cyklus do while vykoná vždy alespoň jednou. Příklad:
<?php
$i = 1;
// Proměnné $i je přiřazeno číslo 1
do
{
echo $i,' ';
// Vypiš číslo uložené v proměnné $i a pak vypiš mezeru, aby čísla nebyla nalepená hned na sobě.
++$i;
// Inkrementace proměnné $i, tedy zvětšení čísla o jedničku.
}
while ($i <= 2);
?>
Cyklus for Cyklus for je nejsložitějším cyklem v PHP, přesto pro svou užitečnost patří k nejpoužívanějším cyklům vůbec. Používáme ho především tam, kde víme, kolikrát chceme cyklus opakovat. Jeho základní tvar vypadá následovně:
for (počáteční_příkaz; podmínka; příkaz_který_se_vykoná_po_každém_cyklu)
příkaz_který_se_bude_cyklicky_opakovat;
Jinak také:
for(inicializace proměnné; podmínka; operace) {skript}
Cyklus probíhá následovně:
- Nejdříve se vykoná počáteční příkaz
- Otestuje se podmínka. Pokud je pravdivá, pokračuje se následujícím bodem 3. pokud není pravdivá, cyklus skončí a PHP pokračuje za cyklem for
- Vykoná se „příkaz, který se bude cyklicky opakovat“ a hned poté se vykoná „příkaz, který se vykoná po každém cyklu“. Pokračuje se znovu bodem 2.
Kód cyklu for (i když je nejsložitější) má velmi jednoduchý kód. Příklad:
<?php
for ($i=1; $i<=5; ++$i)
echo $i, ' ';
?>
Popis:
- Nejdříve se vykoná počáteční příkaz (inicializace proměnné). Je to první příkaz v závorce. V tomto případě to je přiřazení proměnné $i na číslo 1.
- Pak se otestuje podmínka, v tomto případě se testuje, zda je proměnná $i menší nebo rovna číslu 5. Pokud je podmínka pravdivá, pokračuje se vykonáním příkazu, který se bude cyklicky opakovat (skript), v tomto případě tedy vypsáním proměnné $i.
- Dále se pokračuje příkazem, který se vykoná po každém cyklu (operace), v tomto případě je to inkrementace – zvětšení hodnoty o jednu.
- Následuje opakování cyklu, tedy otestuje se podmínka atd… Jakmile je testovaná podmínka nepravdivá, okamžitě cyklus končí a PHP pokračuje až za cyklem for.
- Jak již bylo zmíněno, tento cyklus se především využívá v případě, že víte, kolikrát se má daná operace provádět. Např. zákazník v e-shopu může stáhnout tři soubory zdarma. Další už budou placené… apod.
Konstrukce switch Konstrukce switch slouží k testování (porovnáváním) hodnoty proměnné se zadanými hodnotami. Příklad:
<?php
$zeme = 'cz';
// Textový řetězec (v tomto případě zkratka cz) je přiřazena do proměnné $zeme
switch ($zeme) {
case 'cz':
echo 'Česká republika';
case 'sk':
echo 'Slovenská republika';
case 'pl':
echo 'Polsko';
}
?>
Vysvětlení: Textový řetězec (v tomto případě zkratka cz) je přiřazena do proměnné $zeme. Konstrukce switch začne porovnávat obsah proměnné $zeme s jednotlivými hodnotami uvedenými u větví case. V tomto případě je to postupně cz, sk a pl. Jakmile PHP narazí na shodnou hodnotu, vykoná příkaz v dané větvi case. V našem případě je to vždy vypsání daného textového řetězce. Protože v proměnné máme hodnotu ‘cz‘, ve výsledku se vypíše Česká republika. Protože uvedený příklad funguje tak, že i po vyhledání shodné hodnoty nadále PHP pokračuje v porovnávání a hledání hodnot dalších větví case, musí se doplnit konstrukce switch o příkaz break. Příklad:
<?php
$zeme = 'cz';
// Textový řetězec (v tomto případě zkratka cz) je přiřazena do proměnné $zeme
switch ($zeme) {
case 'cz':
echo 'Česká republika';
break;
case 'sk':
echo 'Slovenská republika';
break;
case 'pl':
echo 'Polsko';
break;
}
?>
Jakmile PHP v konstrukci switch narazí na break, další příkazy se již nevykonají a PHP se tak „nezdržuje“ s testováním dalších větví case a pokračuje až za konstrukcí switch. Další variantou je, že PHP při testování nenalezne žádnou shodnou hodnotu ve větvích case. Pro tento případ se vkládá další větev s názvem default. Příklad:
<?php
$zeme = 'cz';
// Textový řetězec (v tomto případě zkratka cz) je přiřazena do proměnné $zeme
switch ($zeme) {
case 'cz':
echo 'Česká republika';
break;
case 'sk':
echo 'Slovenská republika';
break;
case 'pl':
echo 'Polsko';
break;
default:
echo 'Nejste z České republiky, ze Slovenska ani z Polska';
}
?>
Ještě můžeme konstrukci switch „vylepšit“ o vykonání příkazu pro určitou skupinu. Příklad:
<?php
$zeme = 'cz';
// Textový řetězec (v tomto případě zkratka cz) je přiřazena do proměnné $zeme
switch ($zeme) {
case 'cz':
case 'sk':
case 'pl':
echo 'Střední Evropa';
break;
// Země patřící do Střední Evropy
case 'gb':
case 'fr':
echo 'Západní Evropa';
break;
// Země patřící do Západní Evropy
default:
echo 'Nejste ze Střední ani Západní Evropy';
break;
}
?>