这个 if 语句如何评估为真?

Posted

技术标签:

【中文标题】这个 if 语句如何评估为真?【英文标题】:How can this if-statement evaluate to true? 【发布时间】:2013-08-27 14:50:22 【问题描述】:
if ($opts['width'] == 'fs' || $opts['height'] == 'fs' || $opts['ratio'] == 'fs') 
    var_dump($opts); // result of this see bellow

var_dump($opts) inside (!) if 语句的结果:

array(3) 
   'width' => int(200)
   'height' => int(0)
   'ratio' => int(0)

这怎么可能?数组的值都不是(搅拌)fs?

【问题讨论】:

尝试使用===! ideone.com/EpsAH2 【参考方案1】:

因为0 == 'fs'。请参阅此conversion table

php=== 运算符来比较值 类型。

更多表格:Type-juggling and (strict) greater/lesser-than comparisons in PHP

【讨论】:

感谢您提供转换表链接。但在我看来,这在某种程度上很奇怪。 0 不应该对(字符串)'fs' 进行评估。无论如何,我已经保存了链接以供将来使用! @mcj:在 PHP 中,如果 A == BB == C 并不意味着 A == C

以上是关于这个 if 语句如何评估为真?的主要内容,如果未能解决你的问题,请参考以下文章

如何更好地组织这两个连续的 IF 语句?

如何在 VBA 中评估 Or 语句?

为啥这个 if 语句以非布尔值成功?

如何在javascript中评估语句if [重复]

Delphi中if语句的评估顺序

编写 if 语句的新方法