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.