In PHP worden er verschillende operators gebruikt, hieronder staan ze allemaal overzichtelijk in een tabel met een voorbeeld.
Toewijzings operatoren of assignment operators zijn operatoren waarmee je ergens een aan waarde toekent.
| Operator | Beschrijving | Voorbeeld | Resultaat |
| = | Toewijzing |
$a = 1 |
De waarde 1 wordt toegewezen aan de variabele $a |
| += | Optelling | $a += $b | Langer: $a = $a+$b, de som van $a en $b |
| - = |
Aftrekking | $a -= $b | Langer: $a = $a-$b, het verschil van $a en $b |
| *= | Vermenigvuldiging | $a *= $b | Langer: $a = $a*$b, het product van $a en $b |
| /= | Deling | $a /= $b | Langer: $a = $a/$b, het quotient van $a en $b |
| %= | Modulo | $a %= $b | Langer: $a = $a%$b, de modulo van $a en $b |
| .= | Toevoegen | $a .= $b | Langer: $a = $a.$b, $b toegevoegd aan $a |
Voorbeelden
<?php // Eerst gaan we de variabelen definiëren met de toewijzingsoperator. $a = 5; $b = 7; // Bewerkingen: $a += $b; // $a bevat nu 12. $a -= $b; // $a bevat nu -2. $a *= $b; // $a bevat nu 35. $a /= $b; // $a bevat nu 0.71429. $a %= $b; // $a bevat nu de rest van de deling van $a door $b, 5. $a .= $b; // $a bevat nu 12, maar wanneer we met strings werken: $string1 = 'Dit is een '; $string2 = 'string.'; $string1 .= $string2; // $string1 bevat nu de waarde van $string1 met daarvan die van $string2 aan toegevoegd. ?>
De makkelijkste en de meest gebruikte operatoren zijn natuurlijk de wiskundige operators, iedereen kent ze wel.
| Operator | Beschrijving | Voorbeeld | Resultaat |
| - | Negatie | -$a | Het tegenovergestelde van $a |
| + | Optelling | $a + $b | De som van $a en $b |
| - |
Aftrekking | $a - $b | Het verschil van $a en $b |
| ++ | Verhogen | $a++ | $a wordt verhoogd met één getal |
| -- | Verminderen | $a-- | $a verminderd met één getal |
| * | Vermenigvuldiging | $a * $b | Het product van $a en $b |
| / | Deling | $a / $b | Het quotient van $a en $b |
| % | Modulo | $a % $b | De rest van de deling van $a en $b |
Voorbeelden
<?php // Eerst gaan we de variabelen definiëren $a = 5; $b = 7; echo -$a; // Geeft: -5. echo $a + $b; // Geeft: 12. echo $a - $b; // Geeft: -2. echo $a * $b; // Geeft: 35. echo $a / $b; // Geeft: 0.71429. echo $a % $b; // Geeft de rest van de deling van $a door $b, 5. echo $a++; // Geeft: 6. echo $a--; // Geeft: 4. ?>
Om waarden te vergelijken gebruikt men de vergelijkingsoperatoren, afhankelijk van het resultaat krijg je een bool terug: true wanneer de expressie klopt, false wanneer deze niet klopt.
| Operator | Beschrijving | Voorbeeld | Resultaat |
| == | Gelijk aan |
$a == $b |
TRUE wanneer de waarden van $a en $b gelijk zijn |
| === | Identiek aan |
$a === $b |
TRUE wanneer de waarden én typen van $a en $b gelijk zijn |
| != |
Verschillend van |
$a != $b | TRUE wanneer de waarden van $a en $b verschillend zijn |
| <> |
Verschillend van |
$a <> $b | TRUE wanneer de waarden van $a en $b verschillend zijn |
| !== | Niet identiek aan |
$ !== $b | TRUE wanneer de waarden én typen van $a en $b niet gelijk zijn |
| < | Kleiner dan |
$a < $b | TRUE wanneer de waarde van $a kleiner is dan die van $b |
| <= | Kleiner dan of gelijk aan |
$a <= $b | TRUE wanneer de waarde van $a kleiner of gelijk is aan die van $b |
| > | Groter dan |
$a > $b | TRUE wanneer de waarde van $a groter is dan die van $b |
| >= | Groter dan of gelijk aan |
$a >= $b | TRUE wanneer de waarde van $a groter of gelijk is aan die van $b |
Voorbeelden
De uitvoer van deze operatoren is een bool met de waarde true of false, om gemakkelijk het type en de waarde hiervan te weten te komen maken we gebruik van de functie var_dump. Het gebruik van deze functie is als volgt:
Hierbij betekent void dat het type dat door deze functie wordt geretourneerd onbekend is, mixed slaat op het type van de invoer, $expression (deze kan een string zijn, een integer, een float, een array, ...) in onderstaande voorbeeldjes voeren we dus een bool in met als waarde ofwel true ofwel false.
<?php // Variabelen definiëren $a = 5; $b = 7; $c = "5"; var_dump($a == $b); // Geeft bool(false) aangezien $a niet gelijk is aan $b. var_dump($a == $c); // Geeft bool(true), de waarden van beide variabelen zijn gelijk. var_dump($a === $c); // Geeft bool(false), de waarden zijn gelijk maar de typen niet. var_dump($a != $b); // bool(true), $a is niet gelijk aan $b. var_dump($a != $c); // bool(false), waarden zijn gelijk. var_dump($a !== $c); // bool(true), typen zijn verschillend. var_dump($a < $b); // bool(true), $a is kleiner dan $b. var_dump($a <= $c); // bool(true), $a is kleiner dan _of_ gelijk aan $c. // > en >= zijn hiervan natuurlijk het tegenovergestelde. ?>
De logische operatoren zijn de volgende:
| Operator | Beschrijving | Voorbeeld | Resultaat |
| && | En |
$a && $b |
Geeft TRUE wanneer $a en $b waar zijn |
| || | Of | $a || $b | Geeft TRUE wanneer $a of $b waar zijn |
| AND |
En | $ AND $b | Geeft TRUE wanneer $a en $b waar zijn |
| OR | Of |
$ OR $b | Geeft TRUE wanneer $a of $b waar zijn |
| XOR | Exclusieve OR |
$a XOR $b | Geeft TRUE wanneer ofwel $a ofwel $b waar zijn |
| ! | Niet | !$a | Geeft TRUE wanneer $a niet waar en dus FALSE is |
Voorbeelden
<?php // Eerst gaan we de variabelen definiëren $a = true; $b = false; $c = true; var_dump($a && $b); // Geeft bool(false) omdat enkel $a true is. Hetzelfde geldt voor "AND". var_dump($a || $b); // Geeft bool(true) omdat $a of $b true is. Hetzelfde geldt voor "OR". var_dump($a XOR $b); // Geeft bool(true) omdat enkel $a true is. Maar: var_dump($a XOR $c); // Geeft bool(false) omdat zowel $a als $c true is. var_dump(!$a); // Geeft bool(false); var_dump(!$b); // Geeft bool(true); ?>
Met bitwise operators kan je bepaalde bits aanpassen of evalueren. In je eerste jaren als PHP scripter kom je hier in principe weinig mee in contact, maar voor de volledigheid van deze cursus gaan we deze operatoren ook bespreken. Denk ook even terug aan het binaire talstelsel dat werd besproken bij het type "Integer".
| Operator | Beschrijving | Voorbeeld | Resultaat |
| & | En |
$a & $b |
Bits die in zowel $a als $b aanwezig zijn |
| | | Of | $a | $b |
Bits die in $a of $b aanwezig zijn |
| ^ |
Exclusieve of |
$a ^ $b |
Bits die in ofwel $a ofwel $b aanwezig zijn |
| ~ | Niet | ~$a | Bits die niet in $a aanwezig zijn |
| << | Shift left |
$a<<$b | Bits in $a $b stappen verplaatsen naar links |
| >> | Shift right |
$a>>$b | Bits in $a $b stappen naar rechts verplaatsen |
In de praktijk worden deze bewerkingen bijvoorbeeld toegepast op zogeheten Access Control Lists hiermee worden bij ledensystemen de toelatingen van gebruikers(groepen) beheert.
Voorbeelden
<?php // Eerst gaan we de variabelen definiëren $a = 1; // binair: 0001 $b = 2; // binair: 0010 $c = 4; // binair: 0100 $d = 8; // binair: 1000 $e = 3; // binair: 0011 $f = 5; // binair: 0101 echo $a & $e; // Geeft: 1(0001) aangezien in beide getallen de bit 0001 aanwezig is. echo $a | $b; // Geeft: 3(0011) aangezien in de getallen de bits 0001 en 0010 aanwezig zijn. echo $c ^ $f; // Geeft: 1(0001) aangezien enkel 0001 in maar één van beide getallen aanwezig is. echo ~$b; // Geeft: 1101, dit keert dus eigenlijk gewoon de nullen en eenen om. echo $a << 2; // Geeft: 4(0100), de positie van 1 in $a is dus 2 plaatsjes naar links verschoven echo $b >> 1; // Geeft: 1(0001), de 1 in $b is dus 1 plaatsje opgeschoven naar rechts. ?>
Om even een praktisch voorbeeldje te geven van hoe zo'n Access Control List werkt, Noot: dit voorbeeldje is louter demonstratief.
<?php // We definiëren hier de verschillende acties die mogelijk zijn. $mag_nieuws_posten = 1; // 000001 $mag_reactie_posten = 2; // 000010 $mag_nieuws_bewerken = 4; // 000100 $mag_nieuws_verwijderen = 8; // 001000 $mag_reactie_bewerken = 16; // 010000 $mag_reactie_verwijderen = 32; 100000 // Merk op dat we hier telkens verspringen met machten van 2, op die manier zien hun binaire waarden er zo uit: 000001, 000010, 000100, ... // Nu maken we de verschillende gebruikersgroepen aan: lid, moderator en administrator. $lid = $mag_reactie_posten; // Een lid kan enkel een reactie posten. $moderator = $lid | $mag_reactie_bewerken | $mag_reactie_verwijderen; // Een moderator kan alles wat een lid kan, en reacties beheren. $administrator = $moderator | $mag_nieuws_posten | $mag_nieuws_verwijderen; // Een administrator kan alles wat een moderator kan, en nieuwsberichten beheren. /* Wat hebben we nu gedaan? We hebben gebruik gemaakt van de Bitwise "of" operator, hiermee nemen we dus de bits die voorkomen in beide getallen: 0001 | 0010 = 0011 */ // Nu kunnen we nakijken of de gebruiker bepaalde permissies heeft. if($lid & $mag_nieuws_posten) { echo 'Lid mag nieuws posten'.; } else { echo 'Lid mag geen nieuws posten.'; } /* Dit zal "Lid mag geen nieuws posten." weergeven omdat lid (000010) geen gemeenschappelijke bits heeft met deze permissie (000001). De expressie "$lid & $mag_nieuws_posten" zal dus 0 zijn, en 0 is een andere vorm van false. Besteed nog niet te veel aandacht aan deze if-structuur, deze komt nog uitvoerig aan bod in het volgende hoofdstuk. */ ?>
Op naar het volgende hoofdstuk!