-3

在 PHP 中,如果我写类似的东西

If ($this->that()){ return $this->that()}

它会执行$this->that()两次吗?或者该解析器是否弄清楚并将其减少到 1 个调用?

如果可能,尽量保持代码干净,但不想为了一个变量分配而将执行时间加倍。

4

3 回答 3

9

是的,它执行了两次。

为了让它执行一次,你应该将它的值保存到一个变量中并返回该变量:

if ($value = $this->that()) {
    return $value;
}
于 2012-11-09T18:06:06.670 回答
1

如果你调用该函数两次,它会评估两次。

于 2012-11-09T18:05:40.787 回答
1

它肯定会执行两次。

也许您正在寻找function_exists?我不确定您的if语句是否旨在确定该函数是否存在或不返回 false。

于 2012-11-09T18:07:17.010 回答