为了账号安全,请及时绑定邮箱和手机立即绑定

如果第一个参数的计算结果为 false,php 是否会计算 or 语句的第二个参数?

如果第一个参数的计算结果为 false,php 是否会计算 or 语句的第二个参数?

PHP
元芳怎么了 2023-07-08 22:14:35
所以我的问题是关于 php 在 or 语句采用两个函数的情况下的行为。当第一个函数的计算结果为 true 时,第二个函数是否仍有可能被执行?我希望下面的代码可以澄清我的意思:$dbh->startTransaction();$stmt = $dbh->prepare("DELETE FROM foo WHERE id=:id");$stmt->bindParam(':id', $id, PDO::PARAM_INT);if (!$stmt->execute() || !bar($id)) {    $dbh->rollBack();}我想确定的是,执行失败时永远不会调用bar()它。$stmt我知道在某些语言中 or 语句会在评估为 true 时返回 true !$stmt->execute(),并且我可以确定除非bar()评估!$stmt->execute()为 false(意味着$stmt->execute()评估为 true 并且查询成功),否则不会调用该语句。我在 php 中是否有这种确定性,或者服务器是否有可能同时或以相反的顺序进行评估$stmt->execute(),bar($id)并以这种方式对我的数据库造成严重破坏?我假设我也能够将我在这里得到的任何答案应用到 and 声明中。如果情况并非如此,请告诉我。
查看完整描述

1 回答

?
绝地无双

TA贡献1946条经验 获得超4个赞

逻辑运算符||意味着如果第一个表达式的计算结果为 true,则不会执行第二个表达式。如果您使用or|则即使第一个表达式的计算结果为 true,也会计算第二个表达式。

if ($expression || $expression) {
    //
    }

在这里,如果第一个表达式的计算结果为 true,则不||会让第二个表达式计算并且流程在if块中继续。仅当第一个表达式变为 时才计算第二个表达式false

这个布尔运算与主要编程语言中的解释完全一样,而不仅仅是在 php 中。如果您想深入了解,请访问php Doc 中的逻辑运算符。

//img2.sycdn.imooc.com/64a96f740001a71c06520209.jpg

根据优先规则,逻辑运算符||具有左关联性,规定左表达式始终首先计算,如果左表达式失败,则将计算右表达式。



查看完整回答
反对 回复 2023-07-08
  • 1 回答
  • 0 关注
  • 94 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信