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: Software, Programování, PHP, Originální díl, Krychlička, Díl, Základ, Malá část, Desetinné číslo, Double, Elsa, Zak, Pole, Příkaz, Echo, Pre, Složitá část, Software na Heureka.cz



Sex manželských párů? Jen výjimečně. Ložnice ovládnou roboti s umělou inteligencí

Sex manželských párů? Jen výjimečně. Ložnice ovládnou roboti s umělou inteligencí

** Sex manželských párů jen při zvláštních příležitostech. ** Ložnice ovládnou sexuální roboti s umělou inteligencí. ** I to je jeden ze závěrů Mezinárodní robotické konference.

Filip KůželJiří Liebreich
RobotiSexUmělá inteligence
Srovnávací test bezdrátových herních headsetů. Používají je už i profi gameři, nemusíte se jich bát ani vy

Srovnávací test bezdrátových herních headsetů. Používají je už i profi gameři, nemusíte se jich bát ani vy

Herní sluchátka bez otravného kabelu oceníte při hraní, ale i při poslechu hudby. Často mohou mít kvalitu dostačující pro univerzální použití. Problém už není ani s výdrží na baterii.

Stanislav Janů
Srovnávací testSluchátkaHry
Nastal pravý čas na výměnu telefonu. Jak poznat, že ten váš už dosluhuje?

Nastal pravý čas na výměnu telefonu. Jak poznat, že ten váš už dosluhuje?

** Jak poznat, že váš telefon má nejlepší dny za sebou? ** Vypadá potlučeně, má pavučinu nebo nedostává aktualizace? ** Ukážeme si, kdy má smysl jeho oprava, a kdy už jen koupě nového

Martin Chroust
Prasklý displejVysloužilý mobilSmartphony
Fitbit ustupuje Googlu. Pixel Watch musí být výkonnější, než dříve oznámené nositelnosti od Fitbitu

Fitbit ustupuje Googlu. Pixel Watch musí být výkonnější, než dříve oznámené nositelnosti od Fitbitu

** Google před třemi lety odkoupil Fitbit ** Jeho podzimní novinky však postrádají spoustu funkcí ** Je to zřejmě proto, aby se vyzdvihl potenciál Pixel Watch

Martin Chroust
FitbitChytré hodinky
Tuto českou základnu plnou satelitů nesmíte vidět. V Mapy.cz je každá anténa pečlivě vyretušovaná

Tuto českou základnu plnou satelitů nesmíte vidět. V Mapy.cz je každá anténa pečlivě vyretušovaná

** Zapomeňte na rozčtverečkovaná místa, kterých si každý všimne ** Mapy.cz musely dokonale zakrýt desítky parabol ** Základnou se přitom na webu chlubí i její majitel. Kocourkov

Jakub Čížek
ČeskoMapy.czMapy
Rozluštili jsme infračervený signál a připojili starou stropní klimatizaci k internetu

Rozluštili jsme infračervený signál a připojili starou stropní klimatizaci k internetu

** Nedávno jsme si pohráli s mobilní klimatizací a Wi-Fi ** Ale co se starými kancelářskými kusy? ** Dekódujeme jejich IR signál a vyrobíme si Wi-Fi ovladač

Jakub Čížek
Pojďme programovat elektronikuProgramování
Google není jen vyhledávač: 15 užitečných funkcí, o kterých možná ani nevíte

Google není jen vyhledávač: 15 užitečných funkcí, o kterých možná ani nevíte

** Google umí kromě vyhledávání i spoustu dalších věcí ** Vybrali jsme více než 15 užitečných funkcí a schopností ** Stačí zadat do vyhledávače ta správná klíčová slova

Karel Kilián
TipyVyhledávačeGoogle