• PHP deel 3: Operators

    3 January 2011 23:10 door
    We gaan je uitleggen waar welke operators gebruikt worden en wat er nu juist gebeurd. Hoe we 2 variables aan elkaar kunnen linken (by reference) en bespreken enkele simpele wiskundige operators en nog een aantal zeer interessante onderwerpen.



    3.1 Toekenningsoperators

    De toekenningsoperator is het teken ‘=’. De waarde aan de rechterkant word gekopierd naar de linkerkant.

    PHP-code:
    <?php
        $resultaat 
    5;
        
    $foo $resultaat;
    ?>
    In dit voorbeeld wordt eerst de waarde 5 gekopierd naar $resultaat, daarna wordt de waarde van $resultaat gekopierd naar $foo. Als ik hierna de variabele $resultaat terug zou veranderen, veranderd er niets aan de waarde van $foo (geldt ook andersom).

    Dit komt omdat we de waarde ‘By Value’ hebben toegekend. Om dit gedrag aan te passen kunnen we de waarde ‘By Reference’ toe kennen. Nu zal niet de waarde gekopierd worden maar de variabele $foo zal verwijzen naar de variabele $resultaat, wijzigingen aan een van beide variabelen wordt automatisch toegepast op de andere (ze verwijzen immers naar dezelfde waarde).

    PHP-code:
    <?php
        $resultaat 
    5;
        
    $foo = &$resultaat// By reference (referentie)
        
    $foo 9// Zowel $resultaat als $foo hebben nu 9 als waarde
    ?>
    3.2 Wiskundige operators

    De volgende wiskundige operatoren zijn beschikbaar in PHP:
    • De negatie
    • De optelling
    • De aftrekking
    • De vermeningvuldiging
    • De deling
    • Modulus (rest van een gehele deling)

    De funtionaliteit spreekt voor zich:
    PHP-code:
    <?php
        $b 
    = -$a// -3
        
    $d 4// 7
        
    $a 1// 3
        
    $f 2// 8
        
    $c 4// 2
        
    $e 10 3// 1
    ?>
    Het resultaat van de deling is een Integer als beide getallen een Integer zijn en de deling een geheel getal als resultaat heeft, anders is het resultaat een Float.

    In PHP zijn er ook verkorte gecombineerde operators beschikbaar:
    PHP-code:
    <?php
        $a 
    1;
        
    $a += 2// bevat nu: 3
        
    $a *= 4// bevat nu: 12
        //...
    ?>
    3.3 Logische operators

    Een Logische operator geeft als resultaat altijd TRUE of FALSE. PHP kent de volgende logische operaties:
    • AND (&): True als beide waarde TRUE zijn
    • OR ( | ): True als een van beide of beide waarde TRUE zijn
    • Inversie ( ! ): TRUE als de waarde FALSE is
    • XOR: TRUE als slechts een van beide waarde TRUE is

    PHP-code:
    <?php
        $a 
    true;
        
    $b false;
        
    $c $a $b// False
        
    $c $a $b// True
        
    $c = !$b// True
    ?>
    Door de tekens (& of |) te verdubbelen krijgen we een short-circuit operator, hierdoor wordt de tweede waarde niet gecontroleerd als het resultaat al gekend is wat dus rekenkracht kan besparen:
    PHP-code:
    <?php
        $a 
    true;
        
    $b false;

        
    /*
            SomeFunction() zal nooit uitgevoerd worden omdat $b False is, hierdoor
            kan de AND nooit True zijn, door het short-circuit wordt de functie
            niet aangeroepen.
        */
        
    $c $b && SomeFunction();

        
    /*
            In dit geval wordt de functie wel aangeroepen omdat $a True is, het
            resultaat is nu nog afhankelijk van de waarde van de functie.
            Die in dit voorbeeld niet gedefinieerd werd.
        */
        
    $c $a && SomeFunction();
    ?>
    3.4 Vergelijkingsoperators

    Om waardes te vergelijken hebben we vergelijkingsoperators nodig, een vergelijking heeft altijd een Boolean als resultaat (TRUE of FALSE). Ze worden meestal als voorwaarde gebruikt in if-constructies. In PHP zijn de volgende vergelijkingsoperators beschikbaar:
    • == is gelijk aan
      === is gelijk aan en van hetzelfde type
    • != en <> is niet gelijk aan
      !== is niet gelijk of niet van hetzelfde type
    • < kleiner dan
      <= kleiner of gelijk aan
    • > groter dan
      >= groter of gelijk aan

    Let op wanneer je twee Strings, beide met numerieke waarde (“34”, “4”) vergelijkt, beide worden geconverteerd naar Integers en zo vergeleken.

    3.5 String operators

    PHP kent ook een String operator, met een punt (.) kan je twee Strings aan elkaar plakken (concatenation). Er bestaat ook een gecombineerde verkorte versie van deze operator:
    PHP-code:
    <?php
        $a 
    ‘Hello ’;
        
    $b ‘world’;
        
    $c $a $b//$c heft als waarde ‘Hello World’
        
    $a .= $b//$a heeft als waarde ‘Hello world’
    ?>
    Geschreven door: Martijn Croonen.
    Kleine aanpassingen door: Aerts Kurt.