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:
true
false
In PHP queste parole non sono sensibili alle maiuscole o alle minuscole, quindi possiamo scriverle anche in questi modi:
TRUE
FALSE
True
False
TRUe
FALSe
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
“:
!true
saràfalse
!false
sarà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
0
e-0
Il numero intero zero""
stringa vuota doppi apici''
stringa vuota singoli apicinull
i valori nulli[]
oarray()
. Quindi array vuoti0.0
e-0.0
numeri 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.