逻辑运算符
逻辑与运算符有两种不同的形式,逻辑与运算符 &&
优先级高于赋值运算符,逻辑与运算符 and
优先级低于赋值运算符。逻辑与运算符在两个值都为 true
时返回 true
。
<?php
var_dump(false && foo()); // bool(false)
var_dump(false and foo()); // bool(false)
$foo = true && false;
var_dump($foo); // bool(false)
$foo = true and false;
var_dump($foo); // bool(true)
逻辑或运算符有两种不同的形式,逻辑或运算符 ||
优先级高于赋值运算符,逻辑或运算符 or
优先级低于赋值运算符。逻辑或运算符在两个值任何一个为 true
时返回 true
。
<?php
var_dump(true || foo()); // bool(true)
var_dump(true or foo()); // bool(true)
$foo = false || true;
var_dump($foo); // bool(true)
$foo = false or true;
var_dump($foo); // bool(false)
逻辑异或运算符 xor
优先级低于赋值运算符。逻辑异或运算符 xor
当一个值为 true
另一个值为 false
时返回 true
。
<?php
var_dump(false xor true); // bool(true)
$foo = 'foo';
$bar = '0';
var_dump($foo xor $bar); // bool(true)
$foo = false xor true;
var_dump($foo); // bool(false)
逻辑非运算符 !
当一个值为 true
时返回 false
, 当一个值为 false
时返回 true
。
<?php
$foo = 'foo';
var_dump(!$foo); // bool(false)
$bar = '0';
var_dump(!$bar); // bool(true)