Operátorok 2.
Folytatjuk a múlt héten megkezdett témát. Most a növelő és a csökkentő operátorokat tárgyaljuk. Íme, a három részből álló sorozat második része.
Most négy egyszerű operátort vizsgálunk:
$a++;
++$a;
$a--;
--$a;
A lényegük, hogy egy adott változó értékét eggyel növelik vagy csökkentik. Tehát:
$a = $a + 1; // $a++ vagy ++$a
$a = $a - 1; // $a-- vagy --$a
Ezeknek az operátoroknak a használata áttekinthetőbbé teszi kódunkat, érdemes használni őket.
De mi a különbség, ha az operátor a változó előtt van, vagy utána?
Ha előtte van, akkor először végrehajtja a műveletet, és utána adja vissza a változó értékét, ha utána, akkor fordítva, azaz előbb megkapjuk a változó értékét, és utána hajtja végre a műveletet.
Lássuk ezt egyszerű példákon keresztül:
<?php
$a = 5;
echo '<b>' . 'Vizsgálat: $a++:' . '</b><br />';
echo $a++; // Először visszakapjuk a változó értékét
echo '<br />'; // Sortörés
echo $a;
?>
<hr>
<?php
$a = 5;
echo '<b>' . 'Vizsgálat: ++$a:' . '</b><br />';
echo ++$a; // Első a művelet
echo '<br />'; // Sortörés
echo $a;
?>
Az eredmény:
Vizsgálat: $a++:
5
6
------------------------------------
Vizsgálat: ++$a:
6
6
A fenti példából jól látszik a különbség.
Természetesen, ugyanígy működik a csökkentő operátor is.
Tehát, ha elsőként az értéket akarjuk, akkor a változó kerül előbbre, ha a műveletet, akkor az operátor.
De mi a helyzet akkor, ha teljesen mindegy? Melyiket használjuk?
Elméletben bármelyiket. De! Ha az operátort a változó elé tesszük, akkor a művelet egy kicsit gyorsabb. Persze, a példaprogramot futtatva ezt nem érzékeljük, olyan kicsi a sebességbeli különbség. Viszont, ha majd nagy terheltségű oldalakat fejlesztünk, akkor nagyon is számítani fog, ugyanis minden apró lehetőség, amivel csökkenthetjük a kódunk futásának idejét, ki kell használni. Többezres egyidejű látogató esetén ezek az apró sebességkülönbségek már mérhetően képesek csökkenteni a szerver terheltségét, ami pedig nagy kincs...
Azonban, ez már egy másik történet, úgy hívják, hogy a kód optimalizálása, és egy jóval összetettebb feladat, mint hogy most itt foglalkozzunk vele.
És végül egy érdekesség:
Egy korábbi posztban foglalkoztunk a null értékkel. Ha egy null értékű változón alkalmazzuk a csökkentő "--" operátort, nem fog történni semmi, az érték marad null. Azonban, ha a növekvőt használjuk "++", akkor a változó értéke 1 lesz.
Teszteljük:
<?php
$a = null;
echo '<b>' . 'Vizsgálat: --$a:' . '</b><br />';
--$a;
if (is_null($a)) {
echo 'A változó értéke: null.';
} else {
echo $a;
}
?>
Eredmény:
Vizsgálat: --$a:
A változó értéke: null.
Amint láthatjuk, a csökkentő operátornak nincs hatása a null értékre. Lássuk a másikat:
<?php
$a = null;
echo '<b>' . 'Vizsgálat: ++$a:' . '</b><br />';
++$a;
if (is_null($a)) {
echo 'A változó értéke: null.';
} else {
echo $a;
}
?>
Eredmény:
Vizsgálat: ++$a:
1
Itt a null érték egyre változott.
A mai témáról ennyi jutott eszembe, de még maradtak operátorok, amelyeket érdemes megnéznünk.
A jövő héten folytatjuk...