2014-10-22 12 views
5

W poniższym kodzie:php dlaczego operator 0 lub zwrot jak prawdziwy

$a = 0 or 1; 
$b = 0 || 1; 
echo "$a, $b"; // 0, 1 

Dlaczego $a równa zero, myślałem or i || były wymienne w PHP? Co dokładnie dzieje się z oświadczeniem or, aby go zwrócił 0?

Założę, że oba wyniki byłyby zgodne z 1, powodując, że będzie to echo 1, 1.

+0

zobaczyć http://stackoverflow.com/a/5998330/1316350 – takeit

+1

możliwe duplikat [operatory logiczne, || lub OR?] (http://stackoverflow.com/questions/5998309/logical-operators-or-or) –

Odpowiedz

8

or jest niższy priorytet niż = który jest niższy priorytet niż ""

Więc kod jest równoważny:

($a = 0) or 1; 
$b = (0 || 1); 

Zobacz precedence table w podręczniku PHP.

+1

OMG, to jest okropne. –

+0

Nie. Jest to udokumentowane. –

+4

Nie byłoby sensu mieć '||' i 'lub' jeśli zrobili dokładnie to samo. – Quentin

0

Jego powodu porządku pierwszeństwa

// The result of the expression (false || true) is assigned to $e 
// Acts like: ($e = (false || true)) 
$e = false || true; 

// The constant false is assigned to $f and then true is ignored 
// Acts like: (($f = false) or true) 
$f = false or true; 

http://php.net/manual/en/language.operators.logical.php