Gli operatori logici e di confronto sono gli ultimi gruppi di operatori del PHP che verranno analizzati in questa trattazione e che possono essere utilizzati all'interno delle espressioni.
Operatori logici
Gli operatori logici consentono di determinare se la relazione tra due o più espressioni è vera (TRUE) o falsa (FALSE). L'unico operatore che fa eccezione a questa regola è l'operatore not
che si occupa di negare il valore di un'espressione. Vediamo insieme quali sono gli operatori logici supportati dal PHP associando ad essi alcuni esempi del loro funzionamento:
Operatore | Nome | Esempio | Risultato espressione |
---|---|---|---|
and oppure && | and | $x && $y |
Vera se e solo se entrambi i valori sono veri |
or oppure || | or | $x || $y |
Vera se uno dei due valori è vero |
xor | xor | $x xor $y |
Vera se uno dei due valori è vero e l'altro è falso |
! | not | !$x |
Vera quando il singolo operando utilizzato è falso o viceversa |
Come analizzato nelle lezioni precedenti, PHP, a differenza ad esempio del C, supporta il tipo di dato booleano
, quindi il risultato di un'espressione tra operatori logici sarà a sua volta un booleano.
true && true; //true
true && false; //false
false && true; //false
false && false; //false
true || true; //true
true || false; //true
false || true; //true
false || false; //false
true xor true; //false
true xor false; //true
false xor true; //true
false xor false; //false
!true; //false
!false; //true
Nel caso in cui una delle espressioni sia intera, float o stringa, PHP si occupa di effettuare il casting automatico. Nel caso di valori maggiori di "1", l'espressione viene interpretata come valore "1"; a tel proposito è possibile analizzare il seguente esempio:
1 && true; //true
2 && true; //true
"2" && true; //true
0 && true; //false
Nel caso in cui un'espressione sia un array, invece, essa viene valutata come vera se e soltanto se l'array non è vuoto, altrimenti è falsa:
array() && true; //false
array(1, 2, 3) && true; //true
Operatori di confronto
Gli operatori di confronto consentono di determinare il valore di due espressioni in base al confronto tra i loro valori.
Operatore | Nome | Esempio | Risultato espressione |
---|---|---|---|
== | Uguale | 5 == 5 | Vera se entrambi i valori sono uguali |
=== | Identico | 5 === 5 | Vera se entrambi i valori sono uguali e dello stesso tipo |
!= | Non uguale | 4 != 5 | Vera se i due valori non sono uguali |
!== | Non identico | 4 !== '4' | Vera se i due valori sono diversi o se i tipi sono diversi |
> | Maggiore | 5 > 4 | Vera se il valore di sinistra è maggiore di quello di destra |
< | Minore | 4 < 5 | Vera se il valore di sinistra è minore di quello di destra |
>= | Maggiore o uguale | 5 >= 4 | Vera se il valore di sinistra è maggiore o uguale di quello di destra |
<= | Minore o uguale | 4 <= 5 | Vera se il valore di sinistra è minore o uguale a quello di destra |
Alcuni esempi relativi a tali risultati potrebbero essere i seguenti:
5 == 5; //true
5 === '5'; //false
5 !== '5'; //true
'10' > 6; //true
5 > '0'; //true
I confronti possono essere effettuati anche con altri tipi di dato che non siano numerici, come ad esempio le stringhe. Nel caso delle stringhe il confronto viene fatto in base all'ordine alfabetico dei caratteri seguendo l'ordine:
- caratteri maiuscoli;
- caratteri minuscoli:
- cifre.
Motivo per il quale si avrà:
$a = 'MAIUSCOLO';
$b = 'minuscolo';
$c = '10 cifra';
$a > $b; //vero perché la stringa inizia per un carattere maiuscolo
$b > $c; //vero perché un carattere minuscolo ha priorità su una cifra
$c > $a; //false perché un carattere maiuscolo ha priorità
'B' > 'A'; //vero perché la A viene prima della B
'm' > 'N'; //falso perché una lettera maiuscola ha priorità rispetto ad una minuscola