若语句并没有比较运算符,只有一个等号,这意味着什么



我有一些以前程序员的代码,我有点困惑它的含义。if语句为:

if( !$this->report = $this->get_report()){
... do something }

我习惯于看到if语句带有一些";truthy;条件或比较运算符。

这是说如果$this->报告为false或不存在,然后使其=$this_.get_report((?

if( !$this->report = $this->get_report())

这条线做了两件事:

  1. $this->get_report()的值赋给$this->report
  2. 验证该值是否与false比较松散

只有当它确实比较(与false松散(时,它才会运行块do something


另一个松散比较的示例:

<?php
if(!$foo = null) {
// going to process this block
}
  1. $foo被分配了一个null
  2. null与PHP中的false比较松散
    1. null == false松散比较
    2. null !== false严格比较
  3. !false导致true,因此块被执行

相关内容

最新更新