逻辑运算符通常用于条件判断,基本用法如下:
// 定义变量
$foo = TRUE;
$bar = FALSE;
// 逻辑与,必须两者都为TRUE
$foo and $bar; // false
$foo && $bar; // false
// 逻辑或,两者任意其一为TRUE
$foo or $bar; // true
$foo || $bar; // true
// 逻辑非,取反向的布尔型结果
!$bar; // true
// 逻辑异或,两者任意其一为TRUE,但不能同时是
$foo xor $bar; // true
在处理逻辑运算符的问题上,需要特别注意几点:
一:优先级问题,建议参考官方运算符优先级。
$foobar = 0 or 'hello world';
// 输出0,因为 = 优先级大于 or
echo $foobar;
$foobar = 0 || 'hello world';
// 输出1,因为 = 优先级小于 ||
echo $foobar;
二:PHP将以 从左到右 的方式进行判断。
$foobar = TRUE ? 'hello' : FALSE ? 'foo' : 'bar';
// 输出 foo
echo $foobar;
// 上例在PHP看来会是这个样子
$foobar = (TRUE ? 'hello' : FALSE) ? 'foo' : 'bar';
三:逻辑与 中只要其一为 FALSE
,将停止判断立刻返回结果。
function foo(){
echo 'hello';
return false;
}
function bar(){
echo 'world';
return true;
}
// 输出 hello
foo() and bar();
四:逻辑或 中只要其一为 TRUE
,将停止判断立刻返回结果。
function foo(){
echo 'hello';
return true;
}
function bar(){
echo 'world';
return false;
}
// 输出 hello
foo() or bar();
五:逻辑判断比较的是布尔型值,所以其他类型的变量在进行判断时会自动转成布尔值进行判断并返回。
// 输出1,因为`hello world`被转成布尔型 TRUE 了
echo 0 || 'hello world';