Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP是否停止关注一个';或';(| |)满足了吗?_Php_If Statement - Fatal编程技术网

PHP是否停止关注一个';或';(| |)满足了吗?

PHP是否停止关注一个';或';(| |)满足了吗?,php,if-statement,Php,If Statement,这是一个简单的问题,不需要太多的if/else语句 例如,如果我有这样一个查询: if ($success1=$db->query('SELECT * FROM `foo`;') || $success2=$db->query('SELECT * FROM `bar`;')) { ... } 当第一次查询成功或失败时,它会停止检查吗?您所指的是短路。是的,php使用短路。使用AND(&&&)如果条件中的第一个检查失败,它将不会检查第二个。这同样适用于或(| |)。如果第一次检

这是一个简单的问题,不需要太多的
if/else
语句

例如,如果我有这样一个查询:

if ($success1=$db->query('SELECT * FROM `foo`;') || $success2=$db->query('SELECT * FROM `bar`;')) {
   ...
}

当第一次查询成功或失败时,它会停止检查吗?

您所指的是短路。是的,php使用短路。使用AND(&&&)如果条件中的第一个检查失败,它将不会检查第二个。这同样适用于或(| |)。如果第一次检查成功,它将不会查看第二条语句

请参见以下帖子进行验证:

这非常有用的一个例子是除以零。在第一次检查中确定分母是否为零,然后在第二次检查中进行除法。订单很重要。如果分母为零,它将跳过第二次检查,并且永远不会被零除


如果($x!=0&&10/$x>3)

如果第一个是真的,那么它将不需要检查语句中的任何其他内容,以便继续执行。如果不是,则代码如下:

if(isset($var)&&$var==1)


不会工作,因为它会抛出一个未定义的错误。一旦它看到第一个值为false,它就会停止语句的其余部分。

当您使用两个已知值尝试它时发生了什么?是的,如果第一个查询返回可以计算为true的值,它就会停止。您意识到每个查询的成功意味着运行时不会出错,不管它是否实际返回数据。。。。但是像这样执行数据库查询并不是一个好的实践,请检查第一个例子我与@MarkBaker在这方面的合作:这有很多问题。您的示例代码未通过几个“最佳实践”测试。您可以缩短代码,但也会降低代码质量<代码>$shorter!==$更好。