Archív Inet.sk Pôvodný autor: Rasťo Turek
21. 04. 2005 o 00:00 8450x

Začiatky v php: Operátory diel prvý

Po dlhšej odmlke som sa rozhodol pokračovať v článkov pre začiatočníkov ďalšou problematikou operátormi. Táto "krátka" pauza mi dala dosť času na to, aby som si uvedomil o čom a ako by som chcel písať a tak verím, že sa môžete tešiť na množstvo článkov z problematikou php a jej využitím v praxi.
Začiatky v php: Operátory diel prvý
Operátory, na ktoré sa dnes pozrieme, sa využívajú na zistenie hodnoty pomocou procedúry alebo operácie s jednou alebo viacerými konštantami. Hodnota, ktorú použijeme v operácii sa nazývam operand. Najjednoduchšou operáciou (rovnako aj v bežnom živote) je súčet. V php je zápis súčtu rovnaký ako aj v matematiky (napr. 9 + 4) a keď sa na to pozrieme z programovacieho hľadiska tak množstvo iných jazykov ako PERL, C, JS a iné sa podobajú operáciám v PHP.

Aritmetické operácie Ako každý iný jazyk aj php používa základné matematické operátory:

+ sčítanie 9 + 4 Spočíta súčet 9 a 4 s výsledkom 13.
- odčítanie 9 - 4 Spočíta rozdiel medzi 9 a 4 s výsledkom 5.
* násobenie 9 * 4 Spočíta súčin medzi 9 a 4 s výsledkom 36.
/ delenie 9 / 4 Spočíta podiel medzi 9 a 4 s výsledkom 2,25.
% zostatok 9 % 4 Spočíta zostatok po celočíselnom delení 9/4 s výsledkom 1.

Operátory pre zmenu hodnoty
Znamienko mínus (-) sa taktiež používa s jedinou numerickou hodnotou pre zmenu znamienka (tzn. pri záporných číslach na kladné a opačne) a vždy musí byť uvedené pred operandom ktorý chcem zmeniť.

$c = 4;
$d = -$c; // -4
$e = -9;
$f = -$e; // 9

Operátory priradené k premennej
Táto časť nie je ani tak dôležitá kvôli významu ktorý vyplýva už z predošlého článku ale dôraz na ňu dávam preto, lebo množstvo začínajúcich programátorov v PHP si mýli (=) s (==). Tieto dva zápisy hodne programátorov pomýlia a potom dlhé kódy aplikácií prechádzajú dlhé hodiny s tým, že nedokážu prísť na banálnosť chyby, ktorú však prehliadajú práve pre jej príbuznosť zápisu.

Už na začiatku v predošlom článku som sa snažil vysvetliť, že premenná naberá hodnotu až vtedy, keď je ňou definovaná. Teda:

$a = 4;
$meno = "jano";
$time = "15:25";

Toto platí pre určenie len jedným znamienkom rovná sa (priradenie). Tu chcem upozorniť, dávajte si veľký pozor, pretože dve znamienka rovná sa sú operátorom porovnania, ktoré budete často využívať v podmienkach a vďaka nim dokážete určiť či hodnota a = b alebo naopak nie. Teda:

if(5 == 5)
{
echo "hodnoty sú zhodné";
}
else
{
echo "hodnoty zhodné nie sú";
}

Operátory porovnania
Operátory porovnania sa používajú logicky na testovanie podmienok. Výsledkom porovnania bude vždy pravda (TRUE) alebo nepravda (FALSE). Príkladom:

$e = 9;
if($e > 7) echo "Výsledok porovnávania je TRUE a tento riadok sa vypíše";
if($e < 7) echo "Výsledkom porovnávania je FALSE a tento riadok sa nikdy nevypíše";

Operátory porovnania si zhrnieme v tabuľke:
== rovnosť $e == $d Bude pravda ak $e a $d majú rovnakú hodnotu
< menší $e < $d Bude pravda ak $e je menšie od $d
> väčší $e > $d Bude pravda ak $e je väčšie od $d
<= menší alebo rovnaký $e <= $d Bude pravda ak $e je menšie alebo rovné $d
>= väčší alebo rovnaký $e >= $d Bude pravda ak $e je väčšie alebo rovné $d
!= nerovnosť $e != $d Bude pravda ak $e je rozdielne od $d
< > nerovnosť $e <> $d Bude pravda ak $e je rozdielne od $d

Ešte raz by som chcel na Vás apelovať, pamätajte operátor (=) priradenia nie je zhodný s operátorom (==) porovnania a teda plní každý inú funkciu. Výsledok zámeny týchto operátorov:

$e = 9;
if($e = 7) echo "Tento riadok sa vypíše vždy, lebo podmienka splnená bola keďže sme premennej $e zmenili hodnotu priamo v podmienke a teda potrebný efekt porovnanie sa neprejaví";
$e = 9;
if($e == 7) echo "Takto vyzerá dobrý zápis porovnania, i keď sa tento text nevypíše";

K tomuto by som rád ešte podotkol jednu drobnosť, ktorá nebola dlho jasná jednému kamarátovi.

if(7 == 7.00) echo "Toto je pravda, keďže ako sme si povedali v minulom článku aj desatinné číslo s rovnakou hodnotou je v podstate rovnaká hodnota, ako celé číslo, takže sa nuly desatinného čísla pri počítaní \"odstránia\";
if(7 == 7.54) echo "Toto už pravdou nie je, keďže bolo desatinné číslo naplnené hodnotou rozdielnou od nuly";

Ak sa však v budúcnosti stane, že predsa len budete potrebovať rozlíšiť hodnoty 7 a 7.00, musíte porovnávať ich typ ako premennej a nie len samotnú hodnotu.

$e = 7;
$d = 7.00;
if ($e == $d) echo "Výsledkom je pravda, o tomto sme si už povedali vyššie";
if (($e == $d) && (gettype($e) == gettype($d))) echo "Tento krát sa táto podmienka nevypíše lebo funkcia gettype vracia aj typ premennej a keďže je $e celé číslo a $d desatinné ich typ sa nezhoduje, tým pádom je výsledok FALSE";

Rada z vlastnej skúsenosti: Ak máte chybu v zápise a použili ste niekde v aplikácii operátor porovnania určite sa najskôr pozrite tam, najčastejšie je chyba práve tu. Mne sa to stávalo denne, momentálne si už dávam veľký pozor, lebo pri kóde na niekoľko desiatok či stoviek strán nie je "med lízať" hľadať chybu i keď php ma veľmi dobre vyvinutý rozpoznávací mechanizmus a teda sa ľahko dozviete na ktorom riadku je aká chyba, ale o tom neskoršie.

Logické operátory
Logické operátory sa používajú, aby mohlo byť viacero podmienok byť v závere vyhodnotených ako jedna a teda sme nemuseli mať zbytočné množstvo kódu, ktorý dokáže rovnakú vec urobiť v jedinom zápise. Je niekoľko typov logických operátorov, logické "a" vráti TRUE len v prípade, keď sú splnené všetky podmienky, logické "alebo" vráti TRUE len v prípade ak jedna z podmienok je vyhodnotená ako pravda a logické "ani" vráti TRUE len vtedy, ak nebola splnená ani jedna z uvedených podmienok. V tabuľke nižšie sú tieto operátory uvedené spolu aj s príkladmi:

$e && $f logické "a" Bude vrátená TRUE v prípade že obe podmienky boli splnené
$e || $f logické "alebo" Bude vrátená TRUE v prípade že jedna z podmienok bola splnená
$e and $f logické "a" Bude vrátená TRUE v prípade že obe podmienky boli splnené
$e or $f logické "alebo" Bude vrátená TRUE v prípade že jedna z podmienok bola splnená
$e xor $f exkluzívne "alebo" Bude vrátená TRUE v prípade že jedna z podmienok bola splnená, ale v žiadnom prípade obe naraz!!
! $e negácia $e bude vyhodnotené ako nepravda

Všimnite si jednu dôležitú vec a to že existujú dva operátory pre vyhodnocovanie logického "a" a logického "alebo" plus exkluzívne "alebo". Tieto operátory sa síce chovajú podobne ale majú inú prioritu, čo značí, že v podmienke budú vykonané v inom poradí ako by ste možno chceli a teda sa vyhodnotí niektorá podmienka skôr ako tá druhá. Viac si o tomto probléme povieme neskôr, možno toho bude až na jeden článok :o).

Predostriem tu pár príkladov, ktoré by Vám mali pomôcť ozrejmiť problematiku operátorov.

$d = 4;
$e = 7;
$f = 10;
if($d == 4 && $e == 7 && $f == 10) echo "Toto sa vypíše";
Všetky podmienky sú vyhodnotené ako pravda a tak sa funkcia echo prevedie.
if($d == 4 or $e == 9) echo "Toto sa vypíše";
Ak si pozriete operátor or v tabuľke vyššie vidíte že je podmienka splnená a tak sa opäť funkcia echo prevedie.
if($d == 4 xor $ == 7 xor $f == 10) echo "Toto sa nevypíše";
Táto podmienka nebude splnená, pretože je prepojená operátorom xor a teda celá podmienka je nepravdivá. Podmienky xor vyžadujú, aby práve jedna z podmienok bola pravdivá a teda zvyšné dve už nie.
if !($d == 4 && $e == 7 && $f == 10) echo "Toto sa nevypíše";
Tu som sa snažil demonštrovať operátor negácie. Možno sa Vám zdá, že je tento operátor zbytočný, ale verte mi, že niekedy je ho absolútne nevyhnutné použiť ho a to napríklad v prípadoch, keď zbierame dáta z formulárov alebo od užívateľov a potrebujeme overiť ich pravdivosť.

Operátory pre spájanie reťazcov
V PHP sa ako operátor pre spájanie reťazcov používa bodka (.). Bodka dokáže spojiť akékoľvek dva reťazce, avšak ako všetko v PHP má aj tento operátor svoje pravidlá použitia.

$rokov = 15;
echo "Janko mal ". $rokov . " rokov";

Tu vidíte ako sa dá spojiť časť reťazca zároveň s premennou. Môžete kľudne namietať, že sa táto premenná dala zapísať aj medzi úvodzovky, avšak napríklad na sprehľadnenie skriptu je tento zápis najúčinnejší. Toto je však asi najdrobnejšia výhoda zápisu.

Tento operátor sa často využíva pre spájanie dlhých reťazcov ako napríklad:

$mail = "Ahoj Peťo, chcel som ti povedať, že dnes určite dokončím tento článok ".
"napriek časovému sklzu ktorý s ním mám a dúfam že dostatočne zaujme čitateľov ".
"a samozrejme aj teba. Maj sa zatiaľ pekne, potom ti ho pošlem";

Tu môžete vidieť jeden príklad využitia, kde potrebujete aby bol text dostatočne prehľadný. V programovaní musíte dbať aj na pohodlie a priehľadnosť, lebo je veľmi pravdepodobné, že po Vás alebo s Vami začne na skripte pracovať niekto iný, alebo ho otvoríte po dlhej dobe a nebude sa v ňom vôbec vedieť vyznať a bude Vám trvať veľmi dlhú dobu kým si ho opäť celý naštudujete.

To je na dnes všetko. Nabudúce budeme pokračovať v tejto téme, ktorá ako si ja myslím je jedna z najdôležitejších pre začiatky v programovaní, pretože sa s operátormi budete stretávať každý deň (ak budete denne programovať ;o) )

Ďakujem za priazeň a teším sa na skoré stretnutie pri ďalšom z článkov.

Ak budete mať akékoľvek problémy s programovaním v php napíšte na fórum HelfniMi na adrese http://forum.helfnimi.com

Rastislav Turek // http://forum.helfnimi.com

Novinky a inšpirácie

Z nášho blogu

Prečítajte si novinky, inšpirácie a dôležité informácie zo sveta webhostingu a technológií.

Bezpečnostné aktualizácie PHP: Chráňte svoj web pred hrozbami Oznamy
21. 10. 2026

Bezpečnostné aktualizácie PHP: Chráňte svoj web pred hrozbami

Vývojársky tím PHP vydal dôležité bezpečnostné záplaty pre všetky oficiálne podporované verzie PHP 8. Na našich serveroch sme nezaváhali ...

Čítať viac
Gmail končí s funkciou „Odoslať ako“ pre cudzie e-mailové adresy. Čo to znamená pre vás? Oznamy
01. 10. 2026

Gmail končí s funkciou „Odoslať ako“ pre cudzie e-mailové adresy. Čo to znamená pre vás?

Google oznámil, že v januári 2027 zruší v Gmaile funkciu „Odoslať ako“ (Send as) pre e-mailové adresy od iných poskytovateľov. Ak ste si ...

Čítať viac
Večerná „prestávka“ pre server VIP033 Oznamy
25. 09. 2026

Večerná „prestávka“ pre server VIP033

Neustále pracujeme na tom, aby vaše weby bežali hladko, rýchlo a bezpečne. Technológie idú míľovými krokmi vpred a my v Inet.sk s nimi dr...

Čítať viac
Novinky na Inet.sk (09 / 2026) Novinky
09. 09. 2026

Novinky na Inet.sk (09 / 2026)

Posledné mesiace sme v Inet.sk nevenovali len stabilite serverov, ale najmä počúvaniu vašich reálnych skúseností z každodennej praxe. Výs...

Čítať viac

Podpora klientom

Máte ďalšie otázky?

Nezúfajte, pripravili sme pre Vás jednoduché odpovede na najdôležitejšie otázky, ktoré od našich klientov dostávame.

Zistiť viac

Naše výhody

Prečo si nás vybrať?

Našim klientom ponúkame až 30-dňovú záruku vrátenia peňazí.

Sme skutočný slovenský webhosting

Slovenská
firma

Nepatríme pod žiadnu nadnárodnú spoločnosť, sme malá rodinná firma.

Na nás sa môžete kedykoľvek spoľahnúť

Dlhoročné
skúsenosti

Na slovenskom trhu pôsobíme už viac ako 20 rokov, sme overená značka.

Naši prví zákazníci sú stále s nami

Spokojní
zákazníci

Naši zákazníci sú ako naša rodina, preto nám verí už viac ako 1250 klientov.

Maximálna bezpečnosť

Maximálna
bezpečnosť

Chránime Vás pred útokmi i SPAMom. U nás sú Vaše dáta v bezpečí.

Prozákaznícka podpora

Ochotná
podpora

Zakladáme si na individuálnom prístupe, preto Vám vždy radi pomôžeme.

Kvalita a dobrá cena

Férová
cena

Cena pri obnove je rovnaká ako pri objednávke. Nezdražujeme po prvom roku a bez skrytých poplatkov.

U nás sa Vám nič nestratí

Pravidelné
zálohovanie

Vaše dáta zálohujeme každý deň, dostupné sú aj zálohy z pred niekoľkých mesiacov.

Svižný Admin Panel nájdete len u nás

Prehľadný
Admin Panel

Máme rýchly a prehľadný Admin Panel, ktorý zvládne používať naozaj každý.

Správa používateľov

Správa
používateľov

Spravujte svoje projekty bez akýchkoľvek obáv s kolegami alebo externými partnermi.

Máme zľavy pre verných klientov

Vernostné
zľavy

Verní klienti u nás automaticky získavajú 15 % zľavu na každú ďalšiu objednávku.

My Vás nebudeme obmedzovať

Bez
obmedzení

Neobmedzujeme počet databáz, e-mailov, ftp a ani prenos dát.

Hosting pre WordPress

WordPress
na 1 klik

Nainštalujte si obľúbené redakčné systémy rýchlo a jednoducho.

Referencie

Spokojní zákazníci

Pozrite sa, čo o nás povedali naši klienti. Neváhajte a pridajte sa k nám ešte dnes.

Auto 100
Bystricoviny
eCall Slovakia
Filip Jančík
Frost
Merkury Broker
Mi:Su Design
Mesto Nitra
Pro Clienta
Schneider Lekáreň
Vego Marketing
Mesto Zlaté Moravce

Všetky ceny sú uvádzané bez DPH
© 2006 - 2026, Inet.sk, s. r. o., Všetky práva vyhradené

Na našej stránke používame "cookies". Vďaka nim sledujeme návštevnosť, prispôsobujeme reklamu a používateľské nastavenia, čo zlepšuje Váš zážitok z našej stránky. Súhlasíte s ich spracovaním?
Vlastné nastavenia cookies