Dátové typy a operátory

Porovnanie :: Perl | Python

Vzhľadom k faktu, že jazyk PHP je dynamicky typovaný, nepatrí definícia dátových typov k syntaxi jazyka priamo. Dátové typy sú však používané na upresnenie typov parametrov a návratových hodnôt funkcií.

Skalárne dátové typy

Dátový typ Názov Popis
bool Logická hodnota hodnoty TRUE alebo FALSE
float double real Reálne číslo $x = 0.075;
$y = 75.0E-3;
integer Celé číslo $x = 53; // desiatková sústava
$y = 065; // osmičková sústava
$y = 0x35; // šestnástková sústava
string Reťazec $s = "reťazec znakov"
$s = 'reťazec znakov'

Ak je reťazec ohraničený úvodzovkami, tak sú vo vnútri reťazca najskôr vyhodnotené všetky premenné a výrazy v zložených zátvorkách.

Zložené dátové typy

Dátový typ Názov Popis
array Pole Dátový typ reprezentujúci usporiadané zobrazenie kľúčov (celé čísla alebo reťazce) na hodnoty.
Hodnoty môžu byť opäť typu pole, čím je možné vytvárať pole s ľubovoľným počtom rozmerov.
object Objekt Na vytvorenie dátového typu object slúži operátor new, za ktorým nasleduje meno triedy, ktorej má byť objekt inštanciou.

Špeciálne dátové typy

Dátový typ Názov Popis
resource (vonkajší) Zdroj Dátový typ, ktorého inštancie obsahujú odkazy na vonkajšie (aj vzdialené) zdroje. Tieto inštancie sú vytvárané funkciami na to určenými (napr. otvorenie súboru, vytvorenie obrázku, pripojenie k databáze).
Hodnoty môžu byť opäť typu pole, čím je možné vytvárať pole s ľubovoľným počtom rozmerov.
$fh = fopen("subor.txt", "r")
null Neznáma hodnota Jedinou možnou hodnotou špeciálneho typu null je NULL vyjadrujúci nešpecifikovanú hodnotu (tj. premenná bez hodnoty).
$x = NULL;

Aritmetické operátory

Operátor Názov Popis
+ Plus Súčet celých alebo reálnych čísel.
$x + $y
- Mínus Rozdiel celých alebo reálnych čísel.
$x - $y
* Krát Súčin celých alebo reálnych čísel.
$x * $y
/ Deleno Delenie celých čísel vráti celé číslo. Ak je aspoň jeden operand reálne číslo, vráti číslo reálne.
$x / $y
% Modulo Zvyšok po delení celých čísel.
$x % $y

Logické operátory

Operátor Názov Popis
and alebo && A zároveň Vráti logický súčin operandov.
$x and $y
$x && $y
or alebo || Alebo Vráti logický súčet operandov.
$x or $y
$x || $y
xor Exkluzívny logický súčet Vráti exkluzívny logický súčet operandov (nonekvivalenciu).
$x xor $y
! Negácia Vráti negáciu operandu.
! $x

Operátory inkrementácie a dekrementácie

Operátor Názov Funkcia
++$a Preinkrementácia Inkrementuje $a a potom vráti $a.
$a++ Postinkrementácia Vráti $a a potom inkrementuje $a.
--$a Predekrementácia Dekrementuje $a a potom vráti $a.
$a-- Postdekrementácia Vráti $a a potom dekrementuje $a.

Operátory na úrovni bitov

Operátor Názov Funkcia
& Logický súčin Vo výsledku nastaví bity, ktoré sú nastavené súčasne v oboch operandoch.
$a & $b
| Logický súčet Vo výsledku nastaví bity, ktoré sú nastavené aspoň v jednom z operandov.
$a | $b
^ Exkluzívny logický súčet (bitová nonekvivalencia) Vo výsledku nastaví bity, ktoré sú v oboch operandoch navzájom rôzne.
$a ^ $b
~ Negácia Vo výsledku nastaví bity, ktoré nie sú nastavené v operande a naopak.
~ $a
« Bitový posun vľavo Vráti ľavý operand s bitmi posunutými vľavo o počet krokov daných hodnotou pravého operandu.
$a « $b
» Bitový posun vpravo Vráti ľavý operand s bitmi posunutými vpravo o počet krokov daných hodnotou pravého operandu.
$a » $b

Porovnávacie operátory

Operátor Názov Funkcia
== Rovnosť Vráti TRUE, ak obsahujú operandy rovnakú hodnotu.
$a == $b
!= alebo <> Nerovnosť Vráti TRUE, ak obsahujú operandy rôznu hodnotu.
$a != $b
$a <> $b
=== Identita Vráti TRUE, ak obsahujú operandy rovnakú hodnotu a naviac sú rovnakého typu.
$a === $b
!== Neidentita Vráti negáciu identity.
$a !== $b
> Väčší Vráti TRUE, ak je ľavý operand ostro väčší ako pravý operand.
$a > $b
>= Väčší alebo rovný Vráti TRUE, ak je ľavý operand väčší alebo rovný pravému operandu.
$a >= $b
< Menší Vráti TRUE, ak je ľavý operand ostro menší ako pravý operand.
$a < $b
<= Menší alebo rovný Vráti TRUE, ak je ľavý operand menší alebo rovný pravému operandu.
$a <= $b
?: Ternárna podmienka Vráti hodnotu druhého operandu, ak je prvý operand TRUE. Inak vráti hodnotu tretieho operandu.
$a ? $b : $c

Operátory typovej konverzie

Operátor Funkcia Príklad
(bool) Pretypuje na logickú hodnotu. $a = (bool) $b;
(int) (integer) Pretypuje na celé číslo. $a = (int) $b
(real) (double) (float) Pretypuje na reálne číslo. $a = (real) $b
(string) Pretypuje na reťazec. $a = (string) $b
(array) Pretypuje na pole. $a = (array) $b
(object) Pretypuje na objekt (inštanciu triedy StdClass). $a = (object) $b

Operátory pre prácu s objektmi a triedami

Operátor Názov Funkcia
new Nová inštancia triedy (objekt) Vráti novú inštanciu triedy, ktorej názov a prípadné parametre konštruktora sú dané operandom. Inštanciu je potrebné priradiť premennej.
new X(5);
clone Nový klon inštancie triedy (objektu) Vráti nový klon objektu, ktorý je daný operandom.
clone $a;
instanceof Príslušnosť objektu k triede Vráti TRUE, ak je ľavý operand (typu object) inštanciou triedy pravého operandu (typu class).
$x instanceof X;
:: Kontext triedy Vráti kontext triedy danej operandom. Je zapisovaný postfixovo (vpravo).
MojaTrieda::
-> Kontext objektu Vráti kontext objektu daného operandom. Je zapisovaný postfixovo (vpravo).
$a ->
= Priradenie Priradí ľavému operandu odkaz na tú istú inštanciu, na ktorú odkazuje operand vpravo.
$a = $b
== Rovnosť Vráti TRUE, ak majú oba operandy totožné atribúty obsahujúce rovnaké hodnoty a sú inštanciou tej istej triedy.
$a == $b
=== Identita Od PHP 5 vráti TRUE, ak odkazujú oba operandy na tú istú inštanciu (vo verzii 4 to isté ako rovnosť)
$a === $b

Ďalšie operátory

Operátor pre riadenie chýb

Keď umiestnime operátor "zavináč" (@) pred ľubovoľný výraz, potlačí (takmer) akékoľvek chybové hlásenie, ktoré sa vyskytne pri vyhodnocovaní daného výrazu.

Ak je v konfigurácii PHP servera nastavená direktíva track_errors, prípadné chybové hlásenie je uložené do premennej $php_errormsg.

Operátor priradenia

Základným operátorom priradenia je znamienko rovnosti (=). Vráti priradenú hodnotu, ktorú skopíruje z pravého do ľavého operandu (výnimkou je operátor priradenia objektu, viď Operátory pre prácu s objektmi a triedami)

Existujú aj kombinované operácie priradenia. Vyzerá to nasledovne:

// $y bude obsahovať 1 a $x 6
$x = ($y = 1) * 6;
// $y bude obsahovať 7 a $x -1
$x -= ($y += $x);

Vykonávací operátor

Akýkoľvek reťazec zapísaný medzi obrátené apostrofy bude predaný shellu operačného systému a vykonaný. Výsledok sa nevypíše, ale bude vrátený ako výsledok tohto operátora.

$currdir = `pwd`;

Ak je v konfigurácii nastavená direktíva safe_mode, nie je možné tento operátor použiť.

Operátor zreťazenia

Bodka (.) je operátor spájajúci dva reťazce. Vráti reťazec, ktorý vznikne pripojením reťazca pravého operandu za koniec reťazca ľavého operandu.

// vypíše: "toto bude spojené"
echo "toto bude "."spojené";

$a = "Ahoj ";
$b = $a . "svet!";// teraz $b obsahuje "Ahoj svet!"

$a = "Ahoj ";
$a .= "svet!";// teraz $a obsahuje "Ahoj svet!"