为什么这行代码无法像JS一样在php中工作:
$id = [];
$id = null || [];
if (count($id)) {
echo 'd';
}
为什么$id
仍然为null而不是空数组[]
?因此count()
给出了错误。
答案 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