2015. máj 13.

Operátorok 2.

írta: Bozzai Gyula
Operátorok 2.

php_op_02_k.jpg

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...

 

Szólj hozzá

if else operator null is null