PHP - 4. díl – proměnné

V dnešním dílu seriálu budete provedeni proměnnými a při tom si vyzkoušíte další užitečné skripty.

Tento díl se bude věnovat proměnným. Při povídání o proměnných v PHP budou uvedeny i různé skripty na vyzkoušení, které vás dovedou zase o kousek dále. Prosím přečtěte si tyto kapitoly pozorně, i když místy jsou trochu teoretické, ale jsou to nejzákladnější stavební kameny PHP.

Skoro všechny údaje, se kterými se pracuje uvnitř PHP jsou uloženy do tzv. proměnných. Proměnné jsou celkem klíčovou součástí každého programovacího jazyka, PHP nevyjímaje.

Názvy proměnných

Každý, kdo programoval, nebo se alespoň setkal s nějakým programovacím jazykem ví, co jsou to proměnné. Je to pojmenované místo, do kterého můžete uložit hodnotu, ať už číslo, řetězec, objekt či něco jiného. Každá proměnná je v PHP pojmenována a při použití se dává v PHP před název znak dolaru $. Viz náš první ukázkový skript, který ukazuje velmi jednoduché použití proměnné:


<html>
<head>
<title>Přiklad 1. ze 4. dílu</title>
</head>
<body>
<h1><?php
  $počet = 3;
  echo “Proměnná s názvem počet má hodnotu “, $počet, “<br>”;
  $počet = “tři”;
  echo “Proměnná s názvem počet má teď hodnotu “, $počet, “<br>”;
?></h1>
</body>
</html>

Uložte si výše uvedený skript do nějakého souboru, a můžete jej vyzkoušet. Pokud nevíte jak, stáhněte si Intranetový server a přečtěte se ve 3. díle tohoto seriálu, jak zkoušet PHP skripty na „Intranetovém serveru“.

Jak pracuje výše uvedený skript? Je v něm použitá jediná proměnná s názvem počet. Nejdříve příkazem $počet = 3 vložím do proměnné s názvem počet číslo 3. Od té chvíle všude, kde napíšu $počet bude se v PHP toto místo nahrazovat číslem 3, a to až do příštího vložení jiné hodnoty do proměnné počet. Takže následující řádek vypíše tento text: „Proměnná počet má hodnotu 3<br>”. Na 3. řádku vložím do PHP jinou hodnotu, a to řetězec „tři“. Od tohoto vložení už bude v PHP nahrazován výraz $počet tímto řetězcem „tři“. Proto poslední 4. řádek vypíše „Proměnná má teď hodnotu tři<br>“.

Stálo by za to zmínit se, jaké názvy proměnných jsou dovolené a jaké ne. Jednoduše by se dalo napsat, že název proměnné smí obsahovat písmena a číslice, ale nesmí začínat číslicí. Takže proměnná s názvem tygr23 je správná, ale název 1bota je nesprávný. V mnoha programovacích jazycích je možné používat jen písmena anglické abecedy, ale PHP je jiný. V PHP klidně můžete používat háčky, čárky, přehlásky, atd., jak je Vám libo. Takže název Délka, nebo název Množství jsou platné názvy proměnných v PHP skriptech. Čeština není žádným problémem pro PHP. Protože v názvem proměnných není možné používat mezeru, je dovoleno namísto toho používat znak podtržítko . Takže celkem běžné jsou názvy jako Počet_Čtenářů, nebo Uživatelské_Heslo.

Co je to pole proměnných?

V PHP se hodně často používají tzv. pole proměnných. O co jde? Pole je vlastně zkratkou za mnoho proměnných. Zkusme třeba takový příklad, potřebujete si zapamatovat, kolik má který měsíc dnů (řekněme, že únor nebude v přestupném roce). Pak to můžu uložit do proměnných třeba takto:


$dni_leden = 31;
$dni_unor = 28;
$dni_březen = 31;
$dni_duben = 30;
$dni_květen = 31;
$dni_červen = 30;
$dni_červenec = 31;
$dni_srpen = 31;
$dni_září = 30;
$dni_říjen = 31;
$dni_listopad = 30;
$dni_prosinec = 31;

To je hrozně nepraktické. Zkusme třeba jiný příklad.Řekněme, že programujeme sklad, ve kterém je několik tisíc druhů zboží. A bude nás zajímat kolik kusů od každého zboží máme na skladě. Založíme tedy několik tisíc proměnných:


$kusů_zbozi1 = 5;
$kusů_zbozi2 = 10;
$kusů_zbozi3 = 3;

/* a tak dále */

Tak takto to tedy nejde. Museli bychom být blázni, abychom psali tisíce proměnných. Namísto toho tady existují pole. Jak by se tedy vyřešil pomocí polí příklad s měsíci:


$dni[“leden“] = 31;
$dni[“unor“] = 28;
$dni[“březen“] = 31;
$dni[“duben“] = 30;
$dni[“květen“] = 31;
$dni[“červen“] = 30;
$dni[“červenec“] = 31;
$dni[“srpen“] = 31;
$dni[“září“] = 30;
$dni[“říjen“] = 31;
$dni[“listopad“] = 30;
$dni[“prosinec“] = 31;

O co tedy u polí jde? Přeci o to, že máme jenom jednu proměnnou, v našem případě se jmenuje $dní, ale tahle proměnná je vlastně velkým skladištěm hodnot odlišených tzv. indexem. Index je to, co je uvnitř hranatých závorek [ a ]. Pole mají jakožto skladiště mnoha hodnot velké výhody. Možná si řeknete, když se podíváte na uložení počtu dní v měsíci, řeknete si, kde jsou výhody pole? Vždyť je to skoro stejné jako předtím!

Pole se v PHP hodně často používá, protože na pole je PHP velmi schopné. Výhody pole jsou především s tím, že se s polem zachází jako s celkem. Pro pole existuje řada akcí na automatické zpracování jako celku, se kterými se dají dělat hotové divy.

Snad jenom poznámku, že jako indexy polí se v PHP dají používat čísla a řetězce.

Předdefinované proměnné

V předchozím příkladu byla vložena hodnota do proměnná naším přičiněním. Napsáním třeba $počet = 3 bylo dosazena do proměnné s názvem $počet číslo 3. V PHP ovšem existuje spousta proměnných, které dostaly hodnotu odněkud shůry. Jinak řečeno, spousta proměnných má hodnotu, aniž bychom se o to vůbec nějak přičinili. To slouží k tomu, abychom se mohli dozvědět spoustu důležitých údajů. Můžete se například dozvědět spoustu věcí o čtenáři, který si právě prohlíží Vaší stránku.

Pokud chcete vidět všechny předdefinované proměnné, a kromě toho spoustu dalších informací zkuste následující, velmi jednoduchý skript. Funkce phpinfo() slouží ke zjištění současného nastavení PHP serveru.

<?php echo phpinfo(); ?>

Pokud výše uvedený jednořádkový skript spustíte, objeví se detailní popis současného nastavení PHP serveru přehledně uspořádaný do tabulek, bohužel v angličtině. Dole v úplně poslední tabulce nadepsané PHP Variables pak můžete najít výpis všech předdefinovaných proměnných. Všimněte si, že se jedná o pole.

Následující skript ukáže základní informace o tom, kterým prohlížeč používá čtenář stránky s PHP skriptem:


<html>
<head>
<title>Přiklad 3. ze 4. dílu</title>
</head>
<body>
<h1><?php echo $_SERVER[“HTTP_USER_AGENT”]; ?></h1>
</body>
</html>

Jak jste si možná všimli v příkladu uvedeném výše, pro zjištění informací o prohlížeči používám pole s názvem $_SERVER (na začátku je znak podtržítko). Do tohoto pole ukládá PHP důležité informace související s webem a webovým serverem. Například v proměnné $_SERVER s indexem HTTP_USER_AGENT jsou obsaženy informace o prohlížeči. Pokud naproti tomu zobrazím hodnotu proměnné $_SERVER s indexem HTTP_HOST, dozvím se, na jaké doméně jsou PHP stránky uloženy:


<html>
<head>
<title>Přiklad 4. ze 4. dílu</title>
</head>
<body>
<h1><?php
  echo „Stránky jsou uloženy na doméně: “,$_SERVER[“HTTP_HOST”];
?></h1>
</body>
</html>

Neexistence proměnné

S proměnnou můžu udělat v podstatě dvě věci. Můžu do proměnné uložit hodnotu a můžu hodnotu použít, třeba jí vypsat. PHP založí každou proměnnou, která byla naplněna nějakou hodnotou. Co se ale stane, pokud se pokusím vypsat hodnotu proměnné, která neexistuje?

Můžeme si to hned vyzkoušet na skriptu, který se pokouší vypsat neexistující proměnnou $x. Proměnnou $x jsme nikdy žádnou hodnotou nenaplnili, proto neexistuje:


<html>
<head>
<title>Přiklad 5. ze 4. dílu</title>
</head>
<body>
<h1><?php
  echo „Výpis neexistující proměnné: “, $x;
?></h1>
</body>
</html>

Pokud si výše uvedený skript vyzkoušíte, může nastat jedna ze dvou věcí. Vždycky je výsledkem text „Výpis neexistující proměnné:”. Tedy PHP prostě namístě vypsání $x nevypíše nic, protože neexistuje. Pokud má PHP v konfiguraci nastaveno, aby upozorňoval na všechny, i ty nejmenší chybičky, pak k výpisu ještě přidá něco jako „Notice: Undefined variable: x in c:\inet_srv\http\doc_root\null.php on line 7“. Jinými slovy, PHP nám sděluje že je použita neexistující proměnná s názvem x na 7. řádce.

Použití neexistující proměnné považuje PHP za malou chybičku (tzv. notice). Naprostá většina všech webových serverů má PHP nastaveno tak, že malé chybičky nevypisuje. Snadno se tak ovšem udělá chyba při překlepu, jako například v následujícím skriptu:


<html>
<head>
<title>Přiklad 6. ze 4. dílu</title>
</head>
<body>
<h1><?php
  $překlep = “toto je překlep”;
  echo “Hodnota = “, $přelep;
?></h1>
</body>
</html>

Je jasné, že jsme chtěli vypsat hodnotu proměnné $překlep, ale došlo k překlepu. Pokud PHP je nastaveno tak, že malé chybičky potlačuje, nebudeme na náš překlep v názvu proměnné nijak upozorněni. Proto i „Intranetový server“ vypisuje každou, i nejmenší chybičku.

Pokud přesto někdy budete potřeboval potlačit výpis chybu, je tu jednoduchá rada. Stačí před výraz, který může chybičku vyvolat napsat znak zavináč. Viz další příklad, který zaručuje, že nikdy žádná chyba vypsána nebude:


<html>
<head>
<title>Přiklad 7. ze 4. dílu</title>
</head>
<body>
<h1><?php
  echo „Výpis neexistující proměnné: “, @$x;
?></h1>
</body>
</html>

Diskuze (47) Další článek: Tiscali chystá IP telefonii a video na vyžádání

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