我一直试图在javascript中复制短路评估以进行分配。
E.g。在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();
}
答案 0 :(得分:4)
由于PHP 5.3,你希望其他任何东西都是古老的,有ternary ?:
operator没有中间部分(所以,“二元运算符”......?):
$get = $this->input->get() ?: array();
答案 1 :(得分:0)
如果你想在一行中完成......
$get = ($params = $this->input->get()) ? $params : array();
我认为它在任何方面效率都不高。
你也可以这样做......
$get = $this->input->get() ?: array();
但是,使用这种方式,我不确定$this->input->get()
是否被调用一次或两次。