PHP, díl 4. – základní příkazy

V dnešním díle se podíváme na základní konstrukce příkazů a jednoduché prográmky.
Než se začneme věnovat slibovaným příkazům, měl bych pro všechny čtenáře jednu radu. Tento seriál je více či méně zaměřen na uživatele začínajícího, je psán s úmyslem seznámit čtenáře se základy tohoto jazyka. Pokud někdo chce proniknout do tajů PHP opravdu hluboko, stejně mu nezbude nic jiného než si vytisknout originální manuál a se slovníkem v ruce ho přelouskat. (Dobrým řešením je i koupě knihy pana Koska o PHP, třeba na Vltavě, která se svojí podrobností manuálu hodně blíží.

Pro mnohé může být zajímavé přečíst si reakce ostatních čtenářů na tyto články a udělat si tak opravdu svůj vlastní názor, zasvěcení čtenáři mohou upozorňovat na nepřesnosti, kterých jsem se dopustil atd.

Dále bych se chtěl přiznat k jedné věci: už několik let vyučuji výpočetní techniku (vč. programování, HTML, …) na škole, což má jistý vliv na můj styl vyjadřování. Pokud jste tedy nabyli dojmu, že tyto články by muselo pochopit i dítě gymnáziem povinné, máte pravdu.

V prvním díle jsme si řekli více či méně obecné údaje o PHP, v druhém jsme probrali jeho instalaci pod Windows, ve třetím jsme pak začali probírat základy syntaxe. Abste ale ovládli PHP trochu lépe, začneme pěkně popořádku.

Proměnné obecně
V programování obecně se všechno točí kolem proměnných, takže začneme s nimi. Údaj pro úplné začátečníky –proměnné slouží pro uchování hodnot, se kterými chceme ve skriptu pracovat.

Každá proměnná v PHP musí začínat znakem "$". V některých jazycích (Pascal, C) se musí proměnná před použitím "deklarovat". To v PHP odpadá. Při jejím prvním použití se nadeklaruje sama a hned je jí také přiřazen určitý typ. Jaký typ to bude, záleží na hodnotě, kterou do proměnné přiřazujeme.

Pokud použijeme $x=10, proměnná $x bude automaticky celé číslo (integer). Stručně uvedu zbylé typy: array (pole), double (desetinné číslo), object, string (řetězec znaků). Např.

$a[0]="švestky"; (proměnná $a součástí pole, na indexu 0 je hodnota "švestky", tedy proměnná s tímto indexem je typu string)

$b=79.75; //proměnná $b bude typu double)

$c=-12; //proměnná $c bude typu integer), atd...

Pro práci s textovými řetězci existuje v PHP velké množství funkcí, které s textem umí spoustu užitečných věcí. Uvedeme si několik krátkých příkladů:

$retezec=”jen pockej zajici”;
echo StrLen($retezec);

Výsledkem je číslo 17, což je počet znaků v proměnné $retezec.

$retezec=”jen pockej zajici”;
echo StrToUpper($retezec);

Výsledkem je věta JEN POCKEJ ZAJICI, funkce převedla všechny znaky na velká písmena.

$retezec=”zajici”;
echo StrTr($retezec, „i“, „x“);

Výsledkem je slovo zajxcx, funkce převedla všechny znaky „i“ na „x“.

Funkcí pro práci z řetězci lze napočítat asi 20, pokud vám ani jedna nebude vyhovovat, ke konci článku si řekneme, jak si napsat funkci vlastní.

S proměnnými všech typů se dají dělat jak základní matematické operace jako sčítání a odčítání, tak i operace složitější, např. mocniny, bitové posuny, negace atd.

Pro osvětlení si uvedeme příklad:

$x++; // hodnota v proměnné x se zvýšila o jedna
$x=$x+1;
// v podstatě totéž
$x--;
// hodnota v proměnné x se snížila o jedna.

Samozřejmě i řetězce lze „sčítat“:

$retezec1=”jen pockej”;
$retezec2=”zajici”;
$retezec3=$retezec1. $retezec2;
// na spojování řetězců se tedy používá znak „.“ (tečka)

Pokud chceme porovnávat hodnoty proměnných, použijeme klasické větší než (>), menší než (<), příp. rovnost (==).

Např.:

if ($x <> $y) echo “ruzne hodnoty”;

nebo velmi podobně:

if ($x != $y) echo “ruzne hodnoty”; // zápisy „!=“ a „<>“ jsou tedy plně ekvivalentní

Tyto tzv. logické operátory můžeme vzájemně kombinovat:

if ($x > 0 && $x < 100) echo "hodnota v proměnné x je mezi nulou a stovkou";

nebo

if ($x == 0 || $x == 100) echo "hodnota v proměnné x buď nula nebo sto";

Pole
Pole je speciální typ proměnné, která může obsahovat několik hodnot současně. Pro lepší představivost si pole lze představit jako tabulku s jedním nebo více řádky. V praxi se pak ke konkrétním hodnotám dostáváme pomocí tzv. indexů. Malý příklad opět hovoří za vše:

$pole[1]="Petr";
$pole[2]="Pavel";
$pole[3]="Jan";
$pole[4]="Jana";
takže např:

echo $pole[2];
vypíše Pavel.

Pole může být i dvojrozměrné (tabulka s více řádky), trojrozměrné (lze si představit jako krychli nebo kvádr složený z malých krychliček) atd. Rozměrů může být samozřejmě víc, v praxi se však moc nepoužívají, protože tolik rozměrů se už začíná vymykat lidské představivosti a hlavně takové složité struktury jsou velmi paměťově náročné.

Místo čísla indexu lze samozřejmě použít proměnnou, což poli dává široké možnosti uplatnění. Lze tak přehledně uspořádat velké množství informací a pohodlně s nimi pracovat.

Podmínky
Základy podmínek jsme si trošku probrali už minule, takže jen ve zkratce. V zásadě jsou možné 2 typy zápisu, a to:

if ($a==$b):
  echo "a je stejné jako b"
endif;

nebo

if ($a==$b)
{
  echo "a  je stejné jako b"
}

Pokud chceme provést nějakou činnost i v případě, že podmínka není splněna, rozšíříme podmínku a část s příkazem else:

if ($a==$b)
   echo "a je stejné jako b";
else
   echo `"a není stejné jako b";

Jestliže potřebujeme provést při splnění (resp. nesplnění podmínky) více příkazů, použijeme buď složených závorek:

if ($a==$b)
        {
          echo "a je stejné jako b";
          echo "b je stejné jako a. to jsou mi věci.";
        }
else
        {
          echo `"a není stejné jako b";
          echo "b není stejné jako a. je to čím dál tím divnější.";
}

nebo – abychom ušetřili trochu místa – můžete použít druhý způsob:

if ($a==$b):
  echo "a je stejné jako b";
  echo "b je stejné jako a. to jsou mi věci.";
else:
  echo "a není stejné jako b";
  echo "b není stejné jako a. je to čím dál tím divnější.";
endif;
! Zde nesmíme zapomenout na dvojtečky, na konci pak na klíčové slovo endif.

Cykly
Cykly slouží k opakování části skriptu. Jedním z nich je příkaz for, který jsme zmínili v minulém díle, takže přejdeme hned na ty ostatní. Jedná se o cyklus do-while (zde je podmínka pro ukončení na konci, tzn. cyklus se provede nejméně jednou) a while (zde je podmínka hned na začátku, takže může nastat i možnost, že se cyklus neprovede vůbec).

Opět dva malé příklady:

$x=10;
while ($x > 0)
{
  echo $x;
  $x--;
}
Příkaz while by se dal přeložit jako "dokud". Takže tento skript po překladu by zněl asi takto – dokud je $x větší než nula, dělej {...}.

Podobný příklad na do-while:

$x=10;
do 
{
  echo $x;
  $x--;
} while ($x == 0);

Pro násilné přerušení cyklů se používá příkaz break. Upravíme si předchozí příklad:

$x=10;
do 
{
  echo $x;
  $x--;
  if ($x==5) break;  // nový řádek
} while ($x == 0);
Zde je cyklus ukončen v okamžiku, kdy dojde k číslu 5.

"Opakem" příkazu break je příkaz continue, který přeskočí všechny zbývající příkazy v cyklu a začne provádět další iteraci (průchod cyklem). Ukončovací podmínka je samozřejmě nejdříve otestována.

Funkce
Funkce je část skriptu, kterou můžeme vykonat několikrát, aniž bychom její kód museli zapisovat víckrát.

Uvedeme si jeden příklad, ze kterého by mělo být vše jasné:

<?
function spocitej($x)
{
  for ($i=1;$x>0;$x- -)
    {
      $i*=$x;
    }
  echo $i."<br>";
}

$x=5;
spocitej($x);
?>
Funkce spocitej má za úkol spočítat faktoriál zadaného čísla, které je předáno jako parametr. Předávaných parametrů může být samozřejmě více než jeden, ale taky nemusí být použit ani jeden.

Funkce samotná může být samozřejmě mnohem obsáhlejší, výjimkou nejsou složité funkce s mnoha tisíci řádky.

Konstruktory, objekty, dědičnost. Tyto pojmy spadají do pokročilého programování, v těchto článcích se o nich zatím zmiňovat nebudeme.

V příštím dílu se podíváme, jak jednoduše PHP zvládá práci s formuláři.

Poznámky k předcházejícím dílům:

viz. díl 2.: instalace PHP – při použití PNWS musí být v každém adresáři, ve kterém se budou spouštět PHP skripty, umístěn soubor http.aut, obsahující alespoň tyto 2 řádky:

[ostatni]

spoustet=1

Děkuji pozorným čtenářům za upozornění.

Diskuze (4) Další článek: Tvůrci MacOSu pracují na prostředí pro Linux

Témata článku: , , , , , , , , , , , , , , , , ,