<?php
ini_set('display_errors',1);
ini_set('error_reporting',-1);
$data = null;
var_export( $data['name']);
echo PHP_EOL;
var_dump($data['name']);
为什么结果为空,但没有发出通知或警告?
答案 0 :(得分:0)
因为null是未定义的类型,因此$data['name']
创建自己的数组。
答案 1 :(得分:0)
如果在分配$data
之前检查null
的数据类型,您将收到未定义的变量通知。
echo gettype($data);
$data = null;
将null
分配给$data
后,您会看到NULL
的值及其数据类型。
$data = null;
echo gettype($data);
var_dump($data);
根据the documentation of NULL,您NULL
获得$data['name']
表示尚未将其设置为任何值。
特殊的NULL值表示没有值的变量。 NULL是 null类型唯一可能的值。
如果出现以下情况,则认为变量为空
已为其分配常量NULL。
它尚未设置为任何值。
它已被取消()。
以下两个示例显示先前定义的变量不会自动转换为数组,并保留其原始数据类型。
$data = null; // $data is null
var_dump($data['name']); // null
var_dump($data[0]); // null
$data = 'far'; // $data is string
$data[0] = 'b'; // $data is still string
echo $data; // bar
答案 2 :(得分:-1)
重新阅读有关php中类型转换的文档。
http://php.net/manual/en/language.types.type-juggling.php
PHP不像c / c ++或java那么严格: - )