Sea*_*kin 4 php variable-assignment short-circuiting logical-operators
我一直在尝试在 javascript 中复制短路评估以进行分配。
例如在 Javascript 中
var myObject = {foo: 'bar'};
// if myObject is undefined then assign an empty array
var obj = myObject || [];
Run Code Online (Sandbox Code Playgroud)
obj 现在将参考 myObject
我尝试在 PHP 中复制它,发现它只是将其转换为表达式并返回 true 或 false。
我可以在 PHP 中这样做:
$get = $this->input->get() ? $this->input->get() : array();
Run Code Online (Sandbox Code Playgroud)
问题是我不知道$this->input->get()幕后在做什么,所以两次调用该方法效率不高。
所以我很有创意,找到了一个解决方案,如下所示:
// $this->input->get() could return an array or false
$get = ($params = $this->input->get() and $params) ? $params : array();
Run Code Online (Sandbox Code Playgroud)
问题是它将来可能会让我感到困惑,并且可能效率不高。
那么在 PHP 中是否有更好的方法来在这样的单行表达式中分配变量,或者我应该坚持:
$get = $this->input->get();
if (!$get) {
$get = array();
}
Run Code Online (Sandbox Code Playgroud)
由于 PHP 5.3(您希望将其用作其他任何东西)是古老的,因此存在没有中间部分的三元?:运算符(因此,“二元运算符”...?):
$get = $this->input->get() ?: array();
Run Code Online (Sandbox Code Playgroud)