这两种说法都是正确的:

$_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;
}

它们之间有什么区别(如果有的话)?

最佳答案

在实践中是有区别的。含义应该相同,但是在这种情况下,“逗号运算符”版本实现了“完整的 boolean 评估”。也就是说,如果第一个变量未设置,php 将不会查看第二个变量,因为它们处于 && 关系中并且结果不再为真。 (这称为“短路”评估)在第二种情况下,php 必须在调用 isset(...) 之前计算两个参数,因此将检查两个值。

这只是原则,是的,但有时它非常重要,例如如果操作数是函数调用。

(只是对评论者的简短回复说“isset 不接受函数调用”——这不是关于 isset,而是关于实现一般的表达式。一旦结果很明显就停止计算,并尽可能多地避免部分结果可以。函数参数会做相反的事情:它们都在传递给子程序之前被计算。)

关于php - 逗号运算符 PHP,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20724788/

10-12 07:12