【发布时间】:2014-01-08 01:10:24
【问题描述】:
我一直在尝试在 javascript 中复制短路评估以进行分配。
例如在Javascript中
var myObject = {foo: 'bar'};
// if myObject is undefined then assign an empty array
var obj = myObject || [];
obj 现在将引用 myObject
我尝试在 PHP 中复制它,发现它只是将其转换为表达式并返回 true 或 false。
我可以在 PHP 中这样做:
$get = $this->input->get() ? $this->input->get() : array();
这个问题是我不知道$this->input->get()在幕后做了什么,所以两次调用该方法效率不高。
所以我有创意并找到了一个解决方案,如下所示:
// $this->input->get() could return an array or false
$get = ($params = $this->input->get() and $params) ? $params : array();
这样的问题是它可能会在将来让我感到困惑并且它可能不是很有效。
那么在 PHP 中有没有更好的方法来像这样在单行表达式中分配一个变量,还是我应该坚持:
$get = $this->input->get();
if (!$get) {
$get = array();
}
【问题讨论】:
-
如果
$this->input->get()没有找到任何东西,为什么不返回一个空查询? -
@BartFriederichs 这个方法是框架库的一部分,覆盖它并不是一个真正的选择。无论如何,这只是一个解释我的问题的例子。
标签: php variable-assignment logical-operators short-circuiting