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

PHP如果为null或false,默认情况下是否返回空数组?,php,Php,为什么这行代码在php中不能像在JS中那样工作: $id = []; $id = null || []; if (count($id)) { echo 'd'; } 为什么$id仍然是null而不是空数组[]?因此count会给出一个错误。在PHP中,比如| |总是返回一个布尔值,即使给出了一个非布尔值的输出 那么您的语句的计算结果是null还是[]truthy?由于null和空数组的计算结果都为false,因此结果为boolean false 但是,有两个操作符可以执行类似于JS的|

为什么这行代码在php中不能像在JS中那样工作:

$id = [];

$id = null || [];

if (count($id)) {
  echo 'd';
}
为什么$id仍然是null而不是空数组[]?因此count会给出一个错误。

在PHP中,比如| |总是返回一个布尔值,即使给出了一个非布尔值的输出

那么您的语句的计算结果是null还是[]truthy?由于null和空数组的计算结果都为false,因此结果为boolean false

但是,有两个操作符可以执行类似于JS的| |的操作:

$a?:$b是$a的缩写$a:$b;换句话说,如果它是真实的,它的计算值为$a,如果不是,它的计算值为$b。这是一个简短的文档 $a$b是类似的,但检查null而不是真实性;相当于一美元一套$a:$b这叫做 在PHP中,像| |一样,始终返回布尔值,即使给定非布尔值输出

那么您的语句的计算结果是null还是[]truthy?由于null和空数组的计算结果都为false,因此结果为boolean false

但是,有两个操作符可以执行类似于JS的| |的操作:

$a?:$b是$a的缩写$a:$b;换句话说,如果它是真实的,它的计算值为$a,如果不是,它的计算值为$b。这是一个简短的文档 $a$b是类似的,但检查null而不是真实性;相当于一美元一套$a:$b这叫做 从PHP 7及以上版本开始

从PHP 7及以上版本开始

因为PHP和JS是基于完全不同的编码模型的完全不同的语言。所以它是用PHP写的?我想你的意思是$id=null??[];double是什么意思???注意,$id被赋值为false而不是null。另请参阅:因为PHP和JS是基于完全不同的编码模型的完全不同的语言。所以它是用PHP写的,缩写形式??我想你的意思是$id=null??[];double是什么意思???注意,$id被赋值为false而不是null。另见:
<?php

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

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