像数组一样使用php NULL

时间:2015-01-10 16:51:22

标签: php

<?php
  ini_set('display_errors',1);
  ini_set('error_reporting',-1);
  $data = null;
  var_export( $data['name']);
  echo PHP_EOL;
  var_dump($data['name']);

为什么结果为空,但没有发出通知或警告?

3 个答案:

答案 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。

  •   
  • 它尚未设置为任何值。

  •   
  • 它已被取消()。

  •   

以下两个示例显示先前定义的变量不会自动转换为数组,并保留其原始数据类型。

示例1:

$data = null;          // $data is null
var_dump($data['name']); // null
var_dump($data[0]);    // null

示例2:

$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那么严格: - )