PHP如果为null或false,则默认情况下返回空数组?

时间:2019-02-23 20:07:18

标签: php

为什么这行代码无法像JS一样在php中工作:

$id = [];

$id = null || [];

if (count($id)) {
  echo 'd';
}

为什么$id仍然为null而不是空数组[]?因此count()给出了错误。

2 个答案:

答案 0 :(得分:7)

在PHP中,logical operators||总是返回布尔值,即使给出非布尔值输出也是如此。

因此,您的陈述被评估为“ null[]真实吗?”由于null和一个空数组的计算结果均为false,因此结果为布尔值false

但是,有两个运算符将执行与JS的||类似的操作:

  • $a ?: $b$a ? $a : $b的简写;换句话说,如果它是“真”,则求值为$a,否则为$b(这是the ternary operator的缩写)
  • $a ?? $b类似,但检查的是null而不是“真实性”;它等效于isset($a) ? $a : $b(称为null-coalescing operator

答案 1 :(得分:3)

<?php

// PHP < 7
$id = isset($id) ? $id : [];

// PHP >= 7
$id = $id ?? [];

从PHP 7及更高版本开始
Null Coalesce Operator
Another helpful link