【问题标题】:Or operator in assignment left side或赋值左侧的运算符
【发布时间】:2015-06-12 17:01:34
【问题描述】:

我在PHP代码中看到了下一句:

$a OR $a = $b;

这段代码的行为是什么?

这段代码的目的是什么?

谢谢,

【问题讨论】:

  • 嗨。请告诉 - $a OR $a = $b 是 SQL 查询的一部分吗?
  • 我应该认为这是 PHP 中的语法错误 - 一个等号是赋值,而不是比较。我们需要查看更多代码,并且一些解释/上下文也会很好。
  • 这是一个条件赋值语句。如果 $a 包含“真”值,我希望它不会保留当前值。否则 $a 被设置为 $b 中的值。另一种说法 - 如果 $a 为“假”,则将 $a 设置为 $b 的值。 OR“短路”,因此如果 $a 为“真”,则评估停止。 ;-/
  • 我认为 Ryan 的答案是正确的。像'mysql_connect(...)或死(...)'之类的东西。但是,我将代码粘贴到上下文中进行评估: function get_theme_layouts($theme = NULL) { $theme OR $theme = $this->_theme; $布局=数组(); foreach ($this->_theme_locations as $location) { // 获取特殊的网页布局 if( is_dir($location.$theme.'/views/web/layouts/') ) { ... (等等) .. .
  • 感谢大家的参与。

标签: php logical-operators or-operator


【解决方案1】:

运算符“OR”是一个逻辑运算符,用于检查两个(或多个)项中的一个是否为真。如果 $a 或 ($a = $b) 为 TRUE。 运算符“==”(在您的问题中是 =,但我认为是 ==)是一个比较运算符,用于检查 $a 是否等于 $b(如相同的值,术语 A 为真,术语 B 为真,其他情况)。 谢谢

【讨论】:

  • 您可能希望根据 Ryan 的评论编辑您的答案。原代码中的=是正确的。
  • PHP 中的符号 (=) 是一个基本的赋值运算符。对吗?
  • 你是对的。代码所做的是检查$a 是否已经有一个值;如果它的值评估为 false,那么它会将 $b 的值分配给它。它之所以有效,是因为 OR 运算从左到右进行计算,如果左侧计算结果为真,则永远不会检查右侧。我已经在几个地方看到了这种结构,虽然我喜欢它的紧凑性,但我更希望有稍微冗长的代码,当我在六个月后回来时更容易阅读。
猜你喜欢
  • 2017-07-16
  • 2016-06-08
  • 2016-08-20
  • 1970-01-01
  • 2023-04-10
  • 2016-06-23
相关资源
最近更新 更多