“或”和赋值运算符的优先级

2024-02-19

今天发现一些有趣的代码片段。简化后,它看起来像这样:

$var = null;

$var or $var = '123';

$var or $var = '312';

var_dump($var);

问题是,据我所知,分配的优先级高于OR http://www.php.net/manual/en/language.operators.precedence.php,所以,正如我所假设的,var_dump应该输出312(第一 - 分配,第二 - 逻辑比较)。但结果不同,我得到123(首先 - 检查是否$var转换为true,第二个 - 如果没有,则赋值)。

问题是它是如何运作的?

为什么行为是相同的or and ||?


您可以在以下位置查看有关此行为的示例逻辑运算符 http://www.php.net/manual/en/language.operators.logical.php

您还可以阅读有关的文章短路评估 http://en.wikipedia.org/wiki/Short-circuit_evaluation

短路表达式x Sand y(使用 Sand 来表示短路品种)相当于条件表达式if x then y else false;表达方式x Sor y相当于if x then true else y.

In php.

return x() and y();

equal to

if (x())
  return (bool)y();
else
  return false;

return x() or y();

equal to

if (x())
  return true;
else
  return (bool)y();

因此,交易不仅仅是优先事项。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

“或”和赋值运算符的优先级 的相关文章

  • method_存在于父类php中

    我正在尝试使用 php 函数 method exists 但我需要检查该方法是否存在于对象的父类中 so class Parent public function myFunction class Child extends Parent
  • 在 while 循环内查询可以吗?

    我在一个数据库中有两个表 我正在查询第一个表限制 10 然后循环结果 在 while 循环内 我使用第一个查询中的数据作为参数再次执行另一个查询 以下是该脚本的示例
  • WordPress 计划事件未在设定时间触发

    在 WordPress 中 我正在创建一个插件 用于向用户发送电子邮件 为此 我使用 WordPresscron工作 所以基本上它要做的就是每小时向用户发送电子邮件 所以我的代码看起来像这样 public function construc
  • PDO 库比本机 MySQL 函数更快吗?

    我已经阅读了几个与此相关的问题 但我担心它们可能已经过时 因为自这些问题得到解答以来 更新版本的 PDO 库已经发布 我编写了一个 MySQL 类 它构建查询并转义参数 然后根据查询返回结果 目前这个类正在使用内置的mysql函数 我很清楚
  • PHP if in_array 表示多个值

    我有一个由 3 到 12 个值之间的任意位置生成的数组 它根据帐户信息生成该数组 result ad gt user gt groups user username 我想检查这个数组是否有多个值 大约 4 或 5 个 如果其中有任何一个值
  • MySQL:更新所有行将字段设置为0,但将一行的字段设置为1

    是否有一种有效的方法将行字段的选择更新为 0 但根据 ID 将其中一行设置为 1 基本上 我在数据库中有多个对象 我想在其中一个 inuse 之间切换 因此查询将其中一行 按 id 设置为 inuse 1 将其他行设置为 inuse 0 谢
  • 如果所有情况都是真正的 PHP,如何处理这些情况

    我想知道是否有办法继续完成所有三种情况 如果它们都是真的 但是使用break 因为作为一个例子 如果第一种情况是真的 第二种情况是假的 第三种情况也是假的 而且我没有使用break 无论如何它都会进行 将strtotime更改为2014年1
  • 数组和关联数组合并

    如何实现第三个数组 合并Array1和Array2 在 PHP 中做到这一点的最佳方法是什么 非常感谢 Array2 具有类似索引 键 即 Array1 中 id 的关联值 Array1 Array 0 gt Array id gt 56
  • 安全转义表名/列名

    我在 php 中使用 PDO 因此无法使用准备好的语句转义表名或列名 以下是我自己实现它的万无一失的方法 tn str replace REQUEST tn column str replace REQUEST column sql SEL
  • 按给定日期获取上周一和下周一的日期[重复]

    这个问题在这里已经有答案了 我们如何通过提供的日期获取上一周星期一日期和下周星期一日期 示例 if date 2015 04 08 年月日格式 然后函数返回 上周一日期 2015 03 30 下周一日期 2015 04 13 echo Ne
  • fsockopen() 和 SSL 出错,“无法启用加密”

    我正在尝试连接到 Nominet EPP 测试台 但收到 无法启用加密 的消息 这似乎是一个罕见的错误 没有记录的解决方案或原因 用行 socket fsockopen ssl testbed epp nominet org uk 700
  • 从本地 html/javascript 网站插入 mySQL 数据库

    我正在尝试做什么 我的程序的目的是插入数据local HTML JS网站变成online 非本地 mySQL数据库 到目前为止我尝试过的 我试图用来实现此目的的原始方法是让我的本地网站使用 javascript 通过在线发布数据PHP文件
  • 为什么 http://localhost/ 不使用 WAMP 加载任何内容?

    我最近尝试安装 WAMP 但发现没有页面加载 它还有一个橙色的 W 标志 如果这有什么意义的话 它确实说 托盘图标 WAMP服务器已上线尽管 我也做了一些研究 发现 Skype 可能会引起问题 所以我删除了使用端口 80 和 443 作为传
  • 我可以在 Laravel 5.2 中创建一个继承自 User 的新类吗?

    我对 Laravel 还很陌生 使用的是迄今为止的最新版本 5 2 因此我遇到了以下困境 我知道 Laravel 附带了一个User开箱即用的类 但我想开发一个系统 在其中我可以有另外两种类型的用户 称为Researcher and Adm
  • 从字符串中删除第一个和最后一个字符

    我有这个 dataList one two three list explode dataList echo pre print r list echo pre 其输出 gt Array gt 0 gt gt 1 gt one gt 2 g
  • Laravel中with()和compact()有什么区别

    功能有什么区别with and compact 在 Laravel 中这两个例子 示例1 return View make books index gt with booksList booksList 示例2 return View ma
  • Laravel 更新雄辩事件:获取数据

    我一直在读有关雄辩事件的文章 与模型的每次交互都有一个事件 创建 创建 更新 更新 保存 保存 删除 删除 恢复 恢复 我想知道模型更新后的数据以及之前的数据 是否可以 因为文档没有太多关于如何使用这些事件的信息 您正在寻找getDirty
  • 如何找出当前正在运行的 PHP 可执行文件?

    在 PHP 程序内部 我想知道执行它的二进制文件的位置 Perl 有 X以此目的 PHP 中有等效的吗 这样它就可以使用自身执行子 PHP 进程 而不是硬编码路径或假设 php 是正确的 UPDATE 我使用的是lighttpd FastC
  • 无法下载 Windows 版 Composer SSL:握手超时

    这是我尝试安装 Windows 版 Composer 时得到的结果 The https getcomposer org versions https getcomposer org versions 无法下载文件 SSL 握手超时 无法启用
  • 未找到教义列:1054“字段列表”中未知列“s.features”

    我在站点表中添加了一个新列 features 并使用 Doctrine 重新生成了模型 此代码导致错误 siteTable Doctrine Core getTable Site site siteTable gt findOneByNam

随机推荐

  • 使用画布渲染器绕 y 轴旋转长方体而不导致图像失真 ( Three.js )

    我花了几个小时试图解决这个问题 当渲染非常简单的形状 即复杂性非常低的立方体 并使用 Three js 的纹理贴图功能时 当您旋转立方体时 图像似乎旋转时会变形 然后您可以看到一条穿过立方体表面的线 该线看起来像变形 http screen
  • 提取数据 PHP 字符串

    我已经使用 file get contents 基本上将站点的源代码获取到单个字符串变量中 源包含许多行 如下所示 td align center a href somewebsite com something 12345 a td 还有
  • 如何将客户端代码映射到源代码

    最近我了解到可以使用以下命令显示添加到 DOM Dev Tools Elements 选项卡的 JavaScript 代码document write eval等到 Chrome 开发工具和其他浏览器的源代码面板 这是通过在结束前添加评论来
  • 关闭挂钩 C++

    无论何种终止 异常 正常 未捕获的异常等 是否有某种方法可以在终止时运行代码 我知道它在 Java 中实际上是可能的 但是在 C 中也可能吗 我假设一个Windows环境 不 如果有人调用TerminateProcess 您的进程将被销毁
  • iOS 开发人员如何称呼页面底部指示应用程序中打开的窗口数量的点?

    重复 iOS 开发人员将页面底部指示应用程序中打开的窗口数量的视觉点称为什么 这是一个页面控制 http developer apple com library ios documentation uikit reference UIPag
  • JavaScript 对象只是一个关联数组吗?

    好的 我刚刚学习了 JavaScript 的基础知识 并且正在学习objects我在哪里遇到这个例子 JavaScript var person firstname Smith lastname Bach 我们用 PHP 写的是 perso
  • 错误:没有匹配的函数可用于调用“min(long unsigned int&, unsigned int&)”

    我使用的是 ubuntu 12 04 64 位 我用 boost 1 46 1 48 1 52 和 海湾合作委员会 4 4 和 4 6 当我尝试编译时 while m burstReqBeatsRemain if m burstReqAdd
  • UnityEvent 未在检查器中显示动态方法调用(其他 Unity 事件也部分损坏)

    我有这个团结活动 Serializable public class UnityEventString UnityEvent
  • 用针织钩来分隔 000,但已经好几年了

    我在我的顶部定义了一个钩子rnw用逗号分隔 000 knit hooks set inline function x prettyNum x big mark 但是 有一些数字我不想这样格式化 例如年 有没有更好的方法来编写钩子 或者在打印
  • ng2-completer 鼠标单击时未触发所选事件

    正如问题所暗示的 我在应用时遇到问题selected https www npmjs com package ng select ng select活动为ng2 completer 这似乎也是一个悬而未决的问题ng2 completer因为
  • 尝试动态设置MetaTag

    我正在尝试动态地将元标记设置到文档的头部 这是我需要通过代码添加的移动设备特定元标记 我在这里找到了这个解决方案 使用 jQuery 设置元标记值时遇到问题 https stackoverflow com questions 2831529
  • 尝试发布工件时出现错误

    我正在尝试将我的 android 库发布到我的私人存储库 但我从 android studio 的终端收到此错误 无法发布构建信息 请求版本时发生错误 信息 未经授权 这是命令 gradlew bat build artifactoryPu
  • C++11:用另一个 constexpr char 数组初始化 constexpr char 数组

    我想初始化constexpr char 与另一个成员constexpr char 成员 是否可以做C 11或以上 include
  • 如何比较Python中的两个类/类型?

    我在模块中定义了两个类classes py class ClassA object pass class ClassB object pass 在另一个模块中 我获取了该模块的属性 import classes Class1 getattr
  • 在 SQL Server 中根据日期合并行

    我想根据开始日期和结束日期显示数据 一个代码可以包含不同的日期 如果任何时间间隔继续 那么我需要合并这些行并显示为单行 这是示例数据 Code Start Date End Date Volume 470 24 Oct 10 30 Oct
  • PHP 中四舍五入到最大千、百等

    我有一个非常简单的 PHP 问题 但我不知道该怎么做 我想根据数据库返回的值四舍五入到最大百或千 以下是我需要的一些示例 DB返回值11 我希望PHP输出20 DB返回值104 我希望PHP输出200 DB返回值1404 我希望PHP输出2
  • bsxfun 在 MATLAB 中仍然是最优的吗?

    我确实碰到了this https stackoverflow com questions 12951453 in matlab when is it optimal to use bsxfun在搜索这个主题时提出问题 但这似乎已经过时了 R
  • github源码浏览中AJAX是如何完成的?

    Github 有一个非常好的源代码浏览器 在存储库中的不同路径之间导航会生成 ajax 调用来加载内容 正如您可以在 firebug 日志中清楚地看到的那样 ajax 调用返回要显示的新文件列表的 html 除了更改文件的查看列表之外 UR
  • 从视图内调用存储过程

    我有一个创建表的过程 是否可以有一个可以调用该过程然后从表中进行选择的视图 或类似视图 我试过这个 DELIMITER CREATE DEFINER root localhost FUNCTION new routine p1 INT RE
  • “或”和赋值运算符的优先级

    今天发现一些有趣的代码片段 简化后 它看起来像这样 var null var or var 123 var or var 312 var dump var 问题是 据我所知 分配的优先级高于OR http www php net manua