← Tutti gli articoliPHP e database

PHP e database

Operatori booleani in PHP

Matteo Galacci ·

La differenza negli esempi dipende dalla precedenza: && e || hanno precedenza maggiore di =, mentre and e or hanno precedenza minore. Non cambia la tabella logica, cambia il raggruppamento dell’espressione.

$a = false || true;    // $a è true
$b = false or true;    // equivale a ($b = false) or true: $b resta false
$c = (false or true);  // $c è true

Per assegnare un risultato booleano, preferisci && e || oppure parentesi esplicite. Tutti questi operatori usano la valutazione a corto circuito: il secondo operando viene eseguito solo se necessario.

Esempi completi

Un semplice esempio che mostra la differenza tra && - and e || - or
<?php

/**
 * AND
 */
echo '&&' . "\n";
$bool = true && false;
echo 'true && false: ' . (int)$bool . "\n";// false

$bool = false && true;
echo 'false && true: ' . (int)$bool . "\n"; // false

echo 'AND' . "\n";

$bool = true and false;
echo 'true and false: ' . (int)$bool . "\n"; // true

$bool = false and true;
echo 'false and true: ' . (int)$bool . "\n"; // false


/**
 * OR
 */
echo '||' . "\n";
$bool = true || false;
echo 'true || false: ' . (int)$bool . "\n"; // true

$bool = false || true;
echo 'false || true: ' . (int)$bool . "\n"; // true

echo 'OR' . "\n";
$bool = true or false;
echo 'true or false: ' . (int)$bool . "\n"; // true

$bool = false or true;
echo 'false or true: ' . (int)$bool . "\n"; // false
Di seguito l'output:
&&
true && false: 0
false && true: 0
AND
true and false: 1
false and true: 0
||
true || false: 1
false || true: 1
OR
true or false: 1
false or true: 0
Reference: qui

Come provare

Salva l’esempio completo in booleani.php ed esegui php booleani.php. Confronta l’output con quello riportato. In particolare false || true assegna 1, mentre false or true lascia 0 nella variabile perché l’assegnazione è già avvenuta. Per rendere esplicito l’intento, prova anche $bool = (false or true);: in quel caso ottieni 1.

Fonti e approfondimenti