Oggi, lavorando in PHP, mi sono imbattuto in uno strano comportamento: dichiarando una variabile booleana inizializzata a TRUE, stampata mostrava correttamente il valore 1. Se invece la variabile era inizializzata a FALSE, stampata non mostrava alcun valore, invece di stampare il valore 0 come (giustamente?) ci si aspetterebbe.
Dopo diverse quanto inutili ricerche (inizialmente credevo fosse un “problema” di CakePHP!) ho pensato di controllare il manuale di PHP, ed ecco svelato il mistero: è giusto così!
Incredibile ma vero insomma, in PHP le variabili boolean se stampate valgono 1 se TRUE, niente se FALSE!
Sempre sulla pagina del manuale ho trovato questa interessante spiegazione, che riporto qui tradotta per voi in italiano:
E’ corretto che TRUE o FALSE non siano usate come costanti per i numeri 0 ed 1. Ma potrebbero esserci delle volte in cui è utile vedere il valore di un boolean come 1 oppure 0. Ecco come fare:
$var1 = TRUE;
$var2 = FALSE;echo $var1; //Mostrerà il numero 1
echo $var2; //Non mostrerà nulla
Per fare in modo che venga mostrato il numero 0 per il valore FALSE, bisogna effettuare una conversione di tipo (cast):
echo (int)$var2; // Questo mostrerà il numero 0 per FALSE
