在PHP中以数组形式访问布尔变量返回NULL

在PHP中以数组形式访问布尔变量返回NULL,php,arrays,boolean,Php,Arrays,Boolean,在与我的一位工作朋友讨论时,我们发现了PHP的一些奇怪之处。让我们获取以下代码: <?php $leo = false; $retorno = $leo[0]; var_dump($retorno); 因为您试图访问的不是字符串,而是布尔值,所以它返回NULL。自以下日期起: 注意: 使用[]或{}访问其他类型的变量(不包括实现适当接口的数组或对象)会自动返回NULL。 由于您试图访问的不是字符串,而是布尔值,因此它返回NULL。自以下日期起: 注意: 使用[]或{}访问其他类型的变量

在与我的一位工作朋友讨论时,我们发现了PHP的一些奇怪之处。让我们获取以下代码:

<?php

$leo = false;
$retorno = $leo[0];
var_dump($retorno);

因为您试图访问的不是字符串,而是布尔值,所以它返回
NULL
。自以下日期起:

注意: 使用[]或{}访问其他类型的变量(不包括实现适当接口的数组或对象)会自动返回NULL。


由于您试图访问的不是字符串,而是布尔值,因此它返回
NULL
。自以下日期起:

注意: 使用[]或{}访问其他类型的变量(不包括实现适当接口的数组或对象)会自动返回NULL。


它是
NULL
,因为
$leo[0]
不是
$leo
。您没有将
bool
string
分配给
$leo[0]
,因此它是空的,并最终导致
NULL

如果你要说:

$retorno = $leo;


然后您将得到您期望的结果。

它是
NULL
,因为
$leo[0]
不是
$leo
。您没有将
bool
string
分配给
$leo[0]
,因此它是空的,并最终导致
NULL

$leo = false;
$retorno = array($leo);
var_dump($retorno[0]);
如果你要说:

$retorno = $leo;

然后你会得到你期望的结果

$leo = false;
$retorno = array($leo);
var_dump($retorno[0]);
试试这个


在PHP5.4之前,如果您尝试获取字符串索引,它会将字符串转换为0并获取单词的第一个字母,即
$s='asdf';echo$s['f']。现在它会给你一个警告,说偏移量不存在。那么这个问题我们在哪里?在PHP 5.4之前,如果你试图获取字符串的字符串索引,它会将字符串转换为0并获取单词的第一个字母,即
$s='asdf';echo$s['f']。现在它会给你一个警告,说偏移量不存在。那么这个问题我们在哪里呢?