具体的改变是, 对于一个变量$a, 如果$a是一个字符串, 那么, 对于非数字型索引, 比如$a["foo"], 在isset的时候将返回false, empty返回true, 但是为了兼容已有的代码, 当你获取这个值的时候, 还是会返回$a[0], 不过会额外抛出一个警告信息. 比如:
<?php
$a = "laruence";
var_dump($a["foo"]) ; //PHP Warning: Illegal string offset 'foo'
//output string(1) "l"
var_dump(isset($a["foo"]));
//false
var_dump(empty($a["foo"]));
//true而对于键值是bool, double, null的情况, 将会和以前保持一致, 不过会抛出一个Notice信息.
<?php
$a = "bar";
echo $a[TRUE]; //PHP Notice: String offset cast occured
//output a而对于数字型的字符串索引, 比如"1", "12"等, 和以前保持一致.
不过, 还是要提醒下: PHP 5.4还处于开发阶段, 在最终release之前, 任何新特性都可能被调整或者更改. 如果大家有任何建议, 也欢迎反馈, 帮助我们使得PHP变得更好.
谢谢
更多更新信息, 请关注: Changelog