Gli Operatori PHP
Gli operatori sono simboli con cui si eseguono operazioni sulle variabili o valori.
Operatori aritmetici
Operatori di incremento/decremento
Operatori di assegnazione
Operatori di confronto
Operatori logici
Operatori di stringa
Operatori di matrice
Operatori di assegnazione condizionale
Operatori aritmetici
+ | Somma |
- | Sottrae |
* | Moltiplica |
/ | Divide |
% | Resto |
** | Esponenziale |
<?php
$x = 20;
$y = 6;
$z = 2;
echo $x+$y ."<br>"; //-----> 26
echo $x-$y ."<br>"; //-----> 14
echo $x*$y ."<br>"; //-----> 120
echo $x/$y ."<br>"; //-----> 3.333
echo $x%$z ."<br>"; //-----> 2
echo $x**$z ."<br>"; //-----> 400
?>
Nota: l’operatore % calcola ( 20 –(6x3) = 2 resto)
Operatori di incremento/decremento di una variabile
$++ | Post-Incrementa di 1 |
++$ | Pre-Incrementa di 1 |
$-- | Post-Decrementa di 1 |
--$ | Pre-Decrementa di 1 |
<?php
$x = 20;
$y = 20;
$ax = 20;
$ay = 20;
// Opera con la seconda istanza
echo $x++ ."<br>"; //-----> 20
echo $x++ ."<br>"; //-----> 21
echo "<br>";
echo $y-- ."<br>"; //-----> 20
echo $y-- ."<br>"; //-----> 19
echo "<br>";
// Opera con la prima istanza
echo ++$ax ."<br>"; //-----> 21
echo ++$ax ."<br>"; //-----> 22
echo "<br>";
echo --$ay ."<br>"; //-----> 19
echo --$ay ."<br>"; //-----> 18
?>
Operatori di assegnazione valore ad una variabile
= | $x = $y | Assegna valore y a x |
+= | $x += $y | Somma ed assegna a x come $x = $x + $y |
-= | $x -= $y | Sottrae ed assegna a x come $x = $x - $y |
*= | $x *= $y | Moltiplica ed assegna a x come $x = $x * $y |
/= | $x /= $y | Divide ed assegna a x come $x = $x / $y |
%= | $x %= $y | Divide intero ed assegna a x il resto come $x = $x % $y |
<?php
$x = 20;
$y = 6;
$x = $y;
echo $x ."<br>"; //-----> 6
unset($x); // cancella memoria $x
$x = 20;
$x += $y;
echo $x ."<br>"; //-----> 26
unset($x);
$x = 20;
$x -= $y;
echo $x ."<br>"; //-----> 14
unset($x);
$x = 20;
$x *= $y;
echo $x ."<br>"; //-----> 120
unset($x);
$x = 20;
$x /= $y;
echo $x ."<br>"; //-----> 3.333
unset($x);
$x = 20;
$x %= $y;
echo $x ."<br>"; //-----> 2
?>
Nota: l’operatore % calcola ( 20 –(6x3) = 2 resto)
Operatori di confronto
Sono usati per confrontare due valori. Il risultato sarà sempre il valore boleano true o false
$x == $y | Uguale | Restituisce VERO se i valori sono uguali |
$x === $y | Identico | Restituisce VERO se i valori e tipi sono identici |
$x != $y | Non uguale | Restituisce VERO se i valori sono NON sono uguali |
$x <> $y | Non uguale | Restituisce VERO se i valori sono NON sono uguali |
$x !== $y | Non identico | Restituisce VERO se i valori e tipi** NON sono identici |
$x > $y | Maggiore di | Restituisce VERO se $x maggiore di $y |
$x < $y | Minore di | Restituisce VERO se $x minore di $y |
$x >= $y | Maggiore od uguale a | Restituisce VERO se $x maggiore od uguale $y |
$x <= $y | Minore od uguale a | Restituisce VERO se $x minore uguale $y |
var_dump** Questa funzione consente di stampare il valore ed il tipo di qualsiasi variabile. Nell’esempio sottostante analizza i valori boleani “true” e “false” degli operatori di confronto.
<?php
$x = 10;
$xy = 10;
$y = 20;
$z = 15;
var_dump($x == $xy); //-----> true
var_dump($x === $xy); //-----> true
var_dump($x != $y); //-----> true
var_dump($x <> $y); //-----> true
var_dump($x !== $z); //-----> true
var_dump($y > $x); //-----> true
var_dump($x < $y); //-----> true
var_dump($y >= $x); //-----> true
var_dump($x <= $y); //-----> true
?>
Operatore Spaceship
Anche l'operatore Spaceship viene utilizzato per confrontare due espressioni.
Restituisce 3 valori numerici ( -1, 0, 1 )
$x <=> $y | Spaceship | Restituisce -1 se $x minore di $y |
Restituisce 0 se $x uguale a $y | ||
Restituisce 1 se $x maggiore di $y |
<?php
$x = 10;
$xy = 10;
$y = 20;
var_dump($x <=> $y); //-----> -1
var_dump($x <=> $xy); //-----> 0
var_dump($y <=> $x); //-----> 1
?>
Operatori logici
Questi operatori sono utilizzati all'interno di istruzioni condizionali ( es. if ), confrontando i valori booleani delle variabili
and | $x and $y | VERO se entrambi $x e $y sono veri |
&& | $x && $y | VERO se entrambi $x e $y sono veri |
or | $x or | VERO se UNO o tutti e DUE sono veri |
xor | $x xor $y | VERO se SOLO UNO dei due è vero |
|| | $x || $y | VERO se UNO o tutti e DUE sono veri |
! | !$x | Inverte il valore VERO/FALSO di $x |
Se i valori sono veri stampa la stringa
<?php
$x = 20;
$y = 10;
if ($x == 20 and $y == 10) { // true
echo "Hello world!";
}
echo "<br>";
if ($x == 20 && $y == 20) { // false
echo "Hello John!";
}
?>
Risultato:
Hello world!
L’uso delle parentesi, anche se non sempre dovute, garantisce una giusta leggibilità del codice ed evita eccezioni di precedenza tra gli operatori in particolare verso l'operatore =
Ordine di precedenza | Associatività | Operatori | Tipo operatore |
---|---|---|---|
1 | Sinistra | && | logico |
2 | Sinistra | || | logico |
3 | Destra | = += -= *= **= /= .= %= &= |= ^= <<= >>= ??= | assegnazione |
4 | Sinistra | and | logico |
5 | Sinistra | xor | logico |
6 | Sinistra | or | logico |
Differenze di comportamento tra or e xor con e senza (), quando = prende il sopravvento.
Con gli operatori || e && non abbiamo effetti in quanto hanno precedenza rispetto a =.
<?php
$x = 100;
$y = 50;
$f = ($x == 120 or $y == 50); // uno dei due è vero --> true
$g = ($x == 100 xor $y == 80); // uno dei due è vero --> true
$ga = $x == 120 or $y == 50; // assegna come: (($ga = false) or true)
$gb = $x == 100 xor $y == 80; // assegna come: (($gb = true) xor false)
$g3 = $x == 120 || $y == 50; // senza () uno dei due è vero --> true
$g4 = $x == 120 && $y == 50; // senza () solo uno è vero non entrambi--> false
?>
Differenze di comportamento tra && e ||
<?php
$x = 100;
$y = 50;
$a = ($x == 100 && $y == 80);
var_dump($a); // false
$b = ($x == 100 && $y == 50);
var_dump($b); // true
$c = ($x == 120 && $y == 80);
var_dump($c); // false
$a = ($x == 100 || $y == 80);
var_dump($a); // true
$b = ($x == 100 || $y == 50);
var_dump($b); // true
$dc = ($x == 120 || $y == 80);
var_dump($c); // false
?>