【发布时间】:2020-06-18 13:06:00
【问题描述】:
当我像这样在 PHP 中使用三元运算时:
$dataObject = $this->someInstance->getDataFromDB(); //getDataFromDB() for example returns an object or false. It gets data from a database ;-)
$variable = !$dataObject ? false : $dataVariable;
然后getDataFromDB() 被调用一次。
但是当我使用这样的三元运算时,它被调用的频率以及从数据库中获取数据的频率:
$variable = !$this->someInstance->getDataFromDB() ? false : $this->someInstance->getDataFromDB();
我更喜欢性能更好的第一个版本。
感谢您的回答。
【问题讨论】:
-
如果您按照第二种方式进行操作,则会调用两次,因为您没有存储结果,并且在某些情况下,根据
getDataFromDB()返回的内容,可能会获得两组不同的结果你只是在测试真实性。 -
您可能对Elvis operator感兴趣
-
如果该方法已经返回一个对象或 false,则使用三元组为其结果或 false 设置某些内容似乎是多余的。我一定是错过了什么。
-
@Don'tPanic 是的,我也在想同样的事情,希望这只是一个例子,不想写论文:)
-
OP 你放弃了吗?
标签: php performance conditional-operator