php - PHP中使用逻辑运算符的变量赋值

标签 php variable-assignment logical-operators short-circuiting

我一直在尝试在 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();
}

最佳答案

由于 PHP 5.3(您希望将其用作其他任何东西)是古老的,因此有 ternary ?: operator没有中间部分(所以,“二元运算符”......?):

$get = $this->input->get() ?: array();

关于php - PHP中使用逻辑运算符的变量赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20682160/

相关文章:

php - Laravel [5.2.21] 自定义 Auth Guard 不持久

javascript - 重复使用代码,无需提交两次表单

Java调用方法和使用三元运算符并在参数中赋值?

javascript - 在 if 语句 block 中使用 let 定义尚 undefined variable 的替代方法是什么?

javascript - && 逻辑运算符的这两种用法有什么区别?

c - 使用 MIPS 指令集时,为什么使用逻辑左移比使用加载/存储字中的偏移量更有益?

bash - 为什么我的两个相同字符串的 bash 字符串比较总是错误的?

php - Firefox 向多个图像中的第一个图像添加填充,尽管所有图像都具有相同的样式和大小

javascript - 两个变量声明之间的区别

c - 将全零分配给 C 中的嵌套结构(GCC 版本 < 5)