Lekce 14 - Datové typy v PHP
V předešlém cvičení, Řešené úlohy k 13. lekci PHP, jsme si procvičili nabyté zkušenosti z předchozích lekcí.
Vítejte u lekce o datových typech v PHP. Dnes si shrneme datové typy v PHP, ukážeme si, jak s nimi pracovat a v čem je to tak trochu jiné od ostatních jazyků.
Dynamické typování
Prakticky alfa omega datových typů v PHP. PHP totiž pro deklaraci proměnných nevyžaduje definici datového typu, ale rozezná datový typ z kontextu, v jakém jsme proměnnou použili. Tedy pokud do proměnné vložíme string, PHP bude tuto proměnnou považovat za proměnnou s datovým typem string.
Z kontextu se datový typ rozpozná také při operacích, příkladem může být násobení. Pokud násobíme dvě čísla, kdy jedno z nich je definované jako datový typ float, poté oba operandy jsou brané jako float a výsledek bude v typu float.
Pro začátek tedy víme, že PHP definuje datový typ podle kontextu a my jako uživatelé nemusíme žádný datový typ přesně definovat. Pojďme si jednotlivé datové typy více přiblížit.
Datové typy
Než budeme pokračovat, musíme si také ukázat, jaké všechny datové typy jsou v PHP používané:
- String
- Integer
- Float
- Boolean
- Array
- Object
- Null
Níže si je všechny lépe vysvětlíme.
String
String, neboli česky textový řetězec, je datový typ pro text.
Definovat jej můžeme vložením textu do apostrofů '
nebo
uvozovek "
. V případě potřeby můžeme text rozdělit do více
řádků:
$string1 = "Já jsem string"; $string2 = 'Já jsem taky string';
Pro různé úpravy textu slouží v PHP tzv. řetězové funkce, kterých je opravdu mnoho. Jejich použití a vysvětlení můžeme nalézt v našem kurzu o PHP funkcích.
Integer
Další datový typ je integer, také nazýván zkráceně int a je to celočíselný formát. To znamená, že v něm můžeme zapsat pouze celá čísla bez desetinné čárky (v programovacích jazycích se používá tečka). Jakákoliv deklarace proměnné s číslem bez desetinné čárky je tedy automaticky považována za int.
Pokud ale provedeme s takovou proměnnou operaci, jejíž výsledek je desetinné číslo, výsledek se vypíše jako float. Stejně tak, pokud provedeme operaci, kdy druhý operand bude v typu float, PHP nám vždy vrátí float.
$var1 = 5 // proměnná je int $var2 = 2 // proměnná je také int $var3 = 5.0 // proměnná je typu float $var1/$var2 // int/int - výsledek se nám vrátí jako datový typ float $var1/$var3 // int/float - výsledek se nám také vrátí jako float, i když je výsledek celočíselná hodnota
Float
Nyní už ale k tomu stále zmiňovanému datovému typu float. Je to datový typ pro reálná čísla s plovoucí desetinou čárkou, podle toho se vlastně také jmenuje.
V PHP desetinnou čárku zapisujeme jako tečku, jak jsme již zmínili na začátku lekce:
$float = 1.23;
Jak už bylo vysvětleno výše, jakákoliv operace s float nám vrátí výsledek jako float.
Boolean
Boolean je od předchozích datových typů odlišný. Je to tzv. logická hodnota. Rozlišuje tedy pouze mezi hodnotami true (pravda) a false (nepravda). Jejich psaní je tzv. case-insensitive. To znamená, že je můžeme napsat s jakkoliv velkými či malými písmeny:
$var1 = tRue; // reprezentuje hodnotu true $var2 = fALSe; // reprezentuje hodnotu false
Nejčastěji se boolean
využívá v podmínkách
(if
). Pokud chceme porovnat logickou hodnotu a chceme
zaručit pravdivost datového typu, musíme místo dvojitého
rovnítka ==
použít trojité rovnítka ===
. Takové
porovnání kromě jejich hodnoty porovná i jejich datové typy. PHP totiž
jako logické hodnoty považuje také 1 a 0.
Takové porovnání by tedy vypadalo nějak takto:
if (1 == true){} // vyhodnoceno jako TRUE if (1 === true){} // vyhodnoceno jako FALSE
Array
Dostáváme se ke složitějším datovým typům. Prvním z nich je
array neboli pole. Pole definujeme hranatými závorkami
[]
nebo pomocí funkce array()
s hodnotami,
popřípadě s jejich indexy nebo klíči.
Jednoduchý příklad pole může vypadat nějak takto:
$jmena = ["Karel", "Tomáš", "Lukáš"];
Vytvořili jsme pole se jmény tří kamarádů.
Pole je v PHP uspořádaná mapa klíčů a jejich hodnot. Na rozdíl od jiných jazyků, kde je pole pouze souhrn hodnot očíslovaných od 0 po konečně mnoho, v PHP pracují pole trochu jinak. Pro nás je důležité to, že položky pole mohou mít různé datové typy, nemusíme definovat délku pole a že nemusíme používat pouze indexy pro přístup k jednotlivým položkám. Jako položky pole můžou být různé datové typy, jako příklad můžeme použít pole, do kterého bychom ukládali věk a jméno člověka.
Pokud nespecifikujeme jinak, pole v PHP se vytvoří jako číslované pole s první položkou očíslovanou nulou. K druhé položce v poli (jméno Tomáš) bychom přistupovali následovně:
$jmeno = $jmena[1];
Pro přístup k položkám ale nemusíme vždy používat indexy. Klíče si můžeme definovat podle sebe a to buď jako int nebo jako string. Deklarace našeho pole tedy může vypadat i takto:
$pole = [ "první hodnota pole bez definovaného klíče", "jméno" => "druhá hodnota pole s klíčem jméno", 5 => 34 ];
Takto deklarované pole by při výpisu vypadalo následovně:
array (size=3) 0 => string 'první hodnota pole' (length=19) 'jméno' => string 'druhá hodnota pole s indexem jméno' (length=36) 5 => int 34
Tomuto říkáme asociativní pole a to z důvodu, že asociujeme jednotlivé položky ke klíčům.
Object
Jako další datový typ v PHP je tzv object neboli česky objekt. Objekt je instance třídy. Může mít funkce, kterým se říká metody a proměnné kterým se říká vlastnosti. Jeho definice a přístup k jeho vlastnostem vypadá takhle:
$bmw = new Auto("BMW řada 8"); $bmw->nazev;
To je vše co o objektech potřebujete v tuto chvíli vědět. Objektově orientovanému programování se do hloubky věnují další lekce.
Null
Null je speciální datový typ, který může mít pouze hodnotu
null
. Proměnná typu null je proměnná bez přiřazené
hodnoty. To znamená, že pokud například deklarujeme proměnnou, ale
nepřiřadíme ji hodnotu, nastaví se automaticky hodnota
null
.
Přetypování
Když už je proměnná deklarovaná s určitým datovým typem, můžeme ji stále přetypovat na jiný datový typ. Slouží nám k tomu prefixy ve znění datových typů:
- (int), (integer) - Int
- (bool), (boolean) - Boolean
- (float), (double), (real) - Float
- (string) - String
- (array) - Pole
- (object) - Objekt
- (unset) - Null
Prefixy se použijí tímto způsobem:
$int = 10; $string = (string) $int; // proměnná $string bude obsahovat text "10"
Pro další přetypování mezi různými datovými typy platí různá pravidla. Ta se dají opět přehledněji dohledat v PHP dokumentaci a jsou příliš obsáhle téma pro tuto lekci.
Sčítání a přidávání
V PHP se můžeme setkat, jak s klasickým matematickým sčítáním, tak s
tzv. přidáváním. To znamená, že například spojíme dva stringy. Pro
sčítání se používá operátor plus +
a přidávání znak
tečky .
.
Pokud použijeme sčítání, oba operandy se vyhodnotí jako čísla a pokusí se sečíst. Pokud bychom sčítali string a číslo, proběhne sčítání na základě hodnoty daného stringu, pro podrobné vysvětlení těchto složitějších podmínek nám pomůže PHP dokumentace .
Pokud přidáváme, tedy používáme tečku, převedou se čísla na string a "přidají" se ke stringu. Ukážeme si nějaké příklady sčítání a přidávání:
$a = 5 + "5 kluků" // 10 $b = 5 + 6.5 // 11.5 $c = "Ahoj"."světe" // "Ahojsvěte" $d = "Ahoj".5 // "Ahoj5"
class Produkt { public int $id; public float $cena; public array $parametry; public boolean $vProdeji; }
class Produkt { public boolean|string $message; }
V příští lekci, Tvorba vlastních funkcí v PHP, si ukážeme, jak v PHP deklarovat vlastní funkce.
Komentáře
Zatím nikdo nevložil komentář - buď první!