【问题标题】:Usage of comparison operator after assigning variable分配变量后比较运算符的使用
【发布时间】:2016-11-01 03:18:41
【问题描述】:

我已经看到在代码中为变量赋值后直接使用比较运算符,例如:

($i = array_search($v, $b)) !== false // If $v is not in array, outputs false

或者是这样的:

$n = 5 <= 5;
echo $n; // Outputs 1;

在第一个示例中,比较运算符是直接将值与 array_search(...) 进行比较,还是将其与 $i 进行比较,因为它们都在括号中?如果 "$i = array_search(...) 周围没有括号会有所不同吗?

我试过查看比较运算符的 PHP 手册,但似乎没有提到以这种方式使用比较运算符。

另外,在第二个例子中,如果没有括号,比较运算符是将值与 5 还是与 $n 进行比较?

有人可以在分配变量后链接任何与比较运算符的使用有关的文档或文章吗?

【问题讨论】:

标签: php variables syntax comparison-operators


【解决方案1】:

比较运算符是直接将值与array_search(...) 进行比较还是将其与$i 进行比较

它首先将array_search 中的值分配给$i,然后评估与该值的比较。


在您的示例中,array_search 将在失败时返回 false

if( ($i = array_search($v, $b)) !== false ){}

完全等同于:

$i = array_search($v, $b);
if($i !== false){}

或者:

if( array_search($v, $b) !== false ){}

这只是分配$i 的值以供以后使用的便捷快捷方式。

【讨论】:

  • @WeavingBird1917 是的。表达式的计算方式取决于运算符的优先级。
  • 它会产生相同的效果,但它会改变操作的顺序,因为就像FOIL method一样,括号内的内容首先被评估(在这种情况下是赋值),然后是外面。但是没有它们,根据the docs on operator precedence,比较会在分配之前进行评估。
猜你喜欢
  • 1970-01-01
  • 2021-06-16
  • 1970-01-01
  • 1970-01-01
  • 2019-01-18
  • 1970-01-01
  • 2023-03-26
  • 2017-03-28
  • 2016-09-26
相关资源
最近更新 更多