Veškerá zpracovávaná data v PHP jsou určitého typu. Například celé číslo, řetězec nebo boolean (pravda / nepravda).
Základním typů se říká také primitivní datové typy, nebo také skalární typy.
Typ | Název | Popis |
---|---|---|
int |
Celé číslo | (integer ) Obsahuje pouze celé číslo. Maximální hodnota je určena podle počtu bitů. Na 32-bitovém PHP je rozsah od -2,147,483,648 do 2,147,483,647 (~ ± 2 miliardy), 64-bitové PHP má rozsah od -9,223,372,036,854,775,808 do 9,223,372,036,854,775,807 (~ ± 9 quintillionů). Maximální hodnotu můžeme vždy získat zavoláním konstanty PHP_INT_MAX . Pokud maximální hodnotu integeru přesáhneme, bude PHP číslo reprezentovat jako float a automaticky ho přetypuje. |
float |
Desetinné číslo s pohyblivou řádovou čárkou | Jde o variantu čísla s plovoucí řádovou čárkou, pro které platí pravidlo "čím menší, tím přesnější". Číslo se interně uloží jako tzv. mantisa a exponent, takže se vlastně ukládají 2 čísla, mezi kterými se provádí operace: mantisa * (2 ^ exponent) , čímž je možné uložit opravdu obří rozsah čísel. Využívá se principu, že u velkých čísel nepotřebujeme vždy znát přesně jejich hodnotu, zato chceme ušetřit co nejvíce paměti. Čísla typu float nemusí být uloženy přesně a neměly by se používat pro výpočet peněz. |
string |
Řetězec | Obsahuje posloupnost znaků, které se ohraničují pomocí uvozovek nebo apostrofů. Maximální délku omezuje jen kapacita operační paměti. Řetězec může být uložen v libovolném kódování, obsahovat emoji nebo binární data. |
bool |
Logická hodnota | (boolean ) Logická hodnota z booleovy algebry, může obsahovat pouze true (pravda) nebo false (nepravda). |
null |
Prázdná hodnota | Prázdná hodnota null se hodí pro případy, kdy chceme vyjádřit, že něco neexistuje. Například článek nemá kategorii. Někdy se null nesprávně nahrazuje za nulu (0 ) nebo prázdný řetězce ('' ), nicméně to není pro vyjádření neexistence vhodné řešení. |
Pozor: Typ null
není skalární.
Řada vývojářů má při začátcích vývoje problém pochopit rozdíl mezi hodnotou 0
(nula) a null
(neexistující hodnota).
Tento rozdlíl lze velmi dobře a vtipně vysvětlit následujícím obrázkem:
Některé typy lze mezi sebou převádět. Cílový datový typ se uvádí pomocí kulaté závorky a lze uvést kdekoli v aplikaci, například při výpisu hodnoty.
Například:
$pi = 3.14;echo $pi; // vypíše 3.14echo (int) $pi; // vypíše 3
Mějme následující 2 proměnné:
$x = 10;$y = '10';
Jaký je rozdíl mezi obsahy proměnných $x
a $y
?
Proměnná $x
je číslo, $y
je řetězec (obsahující znak "1" a "0"), tedy v případě, že proměnnou pouze uložíme do paměti a nebudeme provádět nějakou operaci, která bude mít vliv na hodnotu. Například následující 2 zápisy budou vracet stejný výsledek:
echo $x + 5; // vypíše 15echo $y + 5; // vypíše 15
V druhém případě dojde k takzvanému dynamickému přetypování, tj. proměnná převede svůj datový typ tak, aby bylo možné s ní provést výpočetní operaci. Na toto chování se nelze vždy spolehnout a jedná se spíše o korektivní chování, co má za úkol opravit špatně napsané scripty začátečníků. Pokud to je možné, tak čísla vždy zapisujte s datovým typem pro uložení čísel, protože se tím zvyšuje jejich přesnost a usnadňuje se budoucí použití.
Poznámka: Je potřeba si uvědomit, že nemůžeme převádět datové typy úplně libovolně a ne vždy je to tedy možné. Pokud budete přetypovávat datový typ na nějaký jiný (nekompatibilní) tak nemusí buď dojít k převodu vůbec, nebo se může původní obsah poškodit, či zcela zničit a nahradit za jiný. Pokud například budete přetypovávat řetězec na celé číslo (a v proměnné bude uložen nějaký text, který není číslem), tak bude místo číselné hodnoty do proměnné uložena hodnota
1
.
Při porovnávání hodnot je potřeba brát v potaz různé datové typy.
Obecně operátor ==
slouží pro obecné porovnání dvou hodnot (bez ohledu na typy), zatímco ===
porovnává hodnoty i datový typ.
Například:
$a = '';$b = null;if ($a == $b) {// Bude vyhodnoceno jako TRUE, protože// dojde k převodu datového typu.}if ($a === $b) {// Provede mnohem přísnější validaci// a neprojde, protože jde o jiný// obsah a jiný datový typ, proto se// tento kód nikdy nespustí.}
Jan Barášek Více o autorovi
Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.
Rád vám pomůžu:
Nabízím trénink vývojářů, konzultace, školení a analýzu návrhových vzorů. Osobně v Praze nebo online.
Napište mi, pokud si nevíte rady.
Lektor: Jan Barášek
Články píše Jan Barášek © 2009-2024 | Kontakt | Mapa webu
Status | Aktualizováno: ... | cs