I valori in booleani in PHP sono indicati con la parola chiave bool. In programmazione indicano un valore di verità che può corrispondere al vero o al falso.
Per definire un valore booleano in PHP utilizziamo le parole chiave:
truefalse
In PHP queste parole non sono sensibili alle maiuscole o alle minuscole, quindi possiamo scriverle anche in questi modi:
TRUEFALSETrueFalseTRUeFALSe
Proviamo a mettere il costrutto echo prima di true e false:
<?php
echo true;
echo "<br>";
echo false;
?>
Il risultato è questo:
1
In PHP quando vogliamo visualizzare un valore booleano, il valore true sarà sempre 1 mentre quello false non avrà alcun valore.
Con la funzione var_dump() diventa molto comodo analizzare i valori bool:
<?php
var_dump(true);
echo "<br>";
var_dump(false);
?>
Risultato:
bool(true)
bool(false)
La funzione var_dump() riconosce che true e false sono valori booleani e metterà all’inizio la parola chiave bool. Poi tra parentesi tonde inserirà il valore booleano.
Possiamo definire dei valori booleani all’interno delle variabili:
<?php
$vero = true;
$falso = false;
$VERO = TRUE;
$FALSO = FALSE;
$Vero = True;
$Falso = False;
var_dump($vero);
echo "<br>";
var_dump($falso);
echo "<br>";
var_dump($VERO);
echo "<br>";
var_dump($FALSO);
echo "<br>";
var_dump($Vero);
echo "<br>";
var_dump($Falso);
?>
Risultato:
bool(true)
bool(false)
bool(true)
bool(false)
bool(true)
bool(false)
Indice riassuntivo
Il ruolo dei valori booleani
In programmazione i valori booleani servono per azionare le strutture di controllo. Quindi, servono a dare un senso logico al programma.
Le strutture di controllo, in PHP come in altri linguaggi di programmazione sono:
- blocchi condizionali:
if,if-else,if-else if,case switch - cicli o loop:
while,do-while,for,foreach - l’epressione
match
Queste e molte altre strutture di controllo in PHP le vedremo meglio, ma il classico esempio di utilizzo dei valori booleani è con i blocchi condizionali if:
<?php
$bool1 = true;
if ( $bool1 ) {
echo "Valore vero.";
}
?>
Risultato:
Valore vero.
L’esempio che ti ho appena fatto è per verificare se il valore è vero. La variabile $bool contiene true quindi su schermo otteniamo la scritta risultante.
Oppure posso utilizzare lo stesso codice ma con l’operatore NOT “!” per attivare una struttura di controllo con un valore falso:
<?php
$bool2 = false;
if ( !$bool2 ) {
echo "L'operatore NOT per avviare una struttura IF con un valore falso";
}
?>
Risultato:
L'operatore NOT per avviare una struttura IF con un valore falso
Quindi l’operatore NOT serve a ribaltare la condizione presentata e per rendere “veri” valori booleani che in realtà sono falsi. Quindi serve a dire “l'opposto“:
!truesaràfalse!falsesaràtrue
Se provassi a usare l’operatore NOT con un valore vero la struttura di controllo non si attiverà:
<?php
$bool3 = true;
if ( !$bool3) {
echo "L'operatore NOT per avviare una struttura IF con un valore falso";
}
?>
Non avremo alcun risultato proprio perché !true è false. Quindi la struttura di controllo non si attiverà.
Valori sempre veri e valori sempre falsi
In PHP ci sono dei valori che sono o sempre veri (truthy values) o sempre falsi (falsy values).
I valori che sono sempre falsi sono i seguenti:
- il valore booleano
false 0e-0Il numero intero zero""stringa vuota doppi apici''stringa vuota singoli apicinulli valori nulli[]oarray(). Quindi array vuoti0.0e-0.0numeri decimali pari a zero o meno zero- una stringa con il numero zero
"0"e'0'
Gli altri sono tutti valori sempre veri.
Proviamo a inserire alcuni valori sempre falsi in semplici blocchi if:
<?php
if (0) {
echo "Se mi vedi, la condizione è vera";
}
if ("0") {
echo "Se mi vedi, la condizione è vera";
}
if (null) {
echo "Se mi vedi, la condizione è vera";
}
if (0.00) {
echo "Se mi vedi, la condizione è vera";
}
if ([]) {
echo "Se mi vedi, la condizione è vera";
}
?>
Adesso proviamo con valori che sono sempre veri:
<?php
// Numero superiore allo zero -> vero
if (4) {
echo "Se mi vedi, la condizione è vera";
}
echo "<br>";
// Numero superiore allo zero in formato stringa -> vero
if ("1") {
echo "Se mi vedi, la condizione è vera";
}
echo "<br>";
// Il punto esclamativo indica il NOT, affianco al null diventa "NOT NULL", cioè NON NULLO -> condizione vera
if (!null) {
echo "Se mi vedi, la condizione è vera";
}
echo "<br>";
// Numero decimale superiore a zero -> vero
if (0.568) {
echo "Se mi vedi, la condizione è vera";
}
echo "<br>";
// Array con alcuni valori -> vero
if ([1, 2, 3]) {
echo "Se mi vedi, la condizione è vera";
}
?>
Risultato:
Se mi vedi, la condizione è vera
Se mi vedi, la condizione è vera
Se mi vedi, la condizione è vera
Se mi vedi, la condizione è vera
Se mi vedi, la condizione è vera
Sono condizioni tutte vere, leggi i commenti nel codice per saperne di più.
Convertire valori in bool con boolval()
In PHP la funzione boolval() serve a convertire un dato valore in valore booleano.
Quindi, è normale e corretto pensare che se dovessi convertire i valori sempre falsi, che abbiamo visto nel paragrafo scorso, con la funzione boolval() otterrei il valore FALSE.
Mentre tutti i valori sempre veri saranno convertiti in TRUE. Ecco degli esempi:
<?php
// Ecco alcuni valori sempre falsi
$var1 = 0;
$var2 = null;
$var3 = array();
$var4 = 0.00;
$var5 = "0";
// Convertiamo questi valori in booleano con boolval() e analizziamo il contenuto con var_dump()
var_dump( boolval($var1) );
echo "<br>";
var_dump( boolval($var2) );
echo "<br>";
var_dump( boolval($var3) );
echo "<br>";
var_dump( boolval($var4) );
echo "<br>";
var_dump( boolval($var5) );
?>
Come vedi sono tutti valori booleani falsi:
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
Proviamo la stessa cosa con valori sempre veri:
<?php
$var6 = "12";
$var7 = -59;
$var8 = !null;
$var9 = !false;
$var10 = 5.5;
$var11 = "Michele";
var_dump( boolval($var6) );
echo "<br>";
var_dump( boolval($var7) );
echo "<br>";
var_dump( boolval($var8) );
echo "<br>";
var_dump( boolval($var9) );
echo "<br>";
var_dump( boolval($var10) );
echo "<br>";
var_dump( boolval($var11) );
?>
Qui i valori booleani sono tutti veri:
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
La funzione is_bool()
La funzione is_bool() serve a riconoscere se il valore inserito o di una variabile è booleno oppure no (nota bene: questa funzione non effettua la conversione a booleano).
Se il valore passato in is_bool() è un booleano questa funzione ritorna true altrimenti ritorna false:
<?php
$bool1 = true;
$bool2 = false;
var_dump( is_bool($bool1) );
echo "<br>";
var_dump( is_bool($bool2) );
?>
Come risultato abbia due valori true, proprio perché i valori dati sono booleani:
bool(true)
bool(true)
Proviamo a inserire una stringa e un numero:
<?php
$bool1 = "Michele";
$bool2 = 583;
var_dump( is_bool($bool1) );
echo "<br>";
var_dump( is_bool($bool2) );
?>
Otteniamo tutti valori falsi:
bool(false)
bool(false)
Questo perché una stringa e un numero intero non sono tipi di dato booleano.