Edw*_*ard 4 php boolean operators
这两个陈述都是正确的:
$_POST['foo'] = $_POST['bar'] = 'some string';
//1. with '&&' operator
if(isset($_POST['foo']) && isset($_POST['bar'])) {
echo true;
}
//2. with a comma
if(isset($_POST['foo'], $_POST['bar'])) {
echo true;
}
Run Code Online (Sandbox Code Playgroud)
它们之间有什么区别(如果有)?
在实践中有区别。含义应该相同,但是在这种情况下,“逗号运算符”版本将实现“完整布尔值评估”。也就是说,如果未设置第一个变量,则php将不会查看第二个变量,因为它们处于&&关系中,结果将不再正确。(这被称为“短路”评估)在第二种情况下,php必须在调用isset(...)之前计算两个参数,以便同时检查两个值。
是的,这只是原理,但是有时很重要,例如,如果操作数是函数调用。
(对评论者的简短回答是“ isset不会接受函数调用”-这与isset无关,它通常与实现表达式有关。一旦结果显而易见,就停止计算,并尽可能多地保留部分结果函数参数会做相反的事情:它们都在传递给子例程之前已计算完毕。)