I valori booleani in PHP: esempi e funzioni

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)

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 apici
  • null i valori nulli
  • [] o array(). Quindi array vuoti
  • 0.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.