vibbow
2014-05-13 11:03:51 +08:00
<?php
$string = 'abcdefghijkl';
var_dump(isset($string['check']));
var_dump($string['check']);
var_dump(isset($string['check'][0]));
var_dump($string['check'][0]);
echo "===================\r\n";
$arr = array(
array('a', 'b', 'c'),
array('d', 'e', 'f')
);
var_dump(isset($arr['check']));
var_dump($arr['check']);
var_dump(isset($arr['check'][0]));
var_dump($arr['check'][0]);
?>
运行结果:
C:\Users\vibbow\Desktop>php test.php
bool(false)
string(1) "a"
bool(true)
string(1) "a"
===================
bool(false)
NULL
bool(false)
NULL
应该是在把String当Array访问时,PHP有特殊的处理。
或许如 #6 所说的,虽然 $string['check'] 不存在,但是你访问的时候,下标的string会被强行转换成int (你这本身就是个string,所以PHP做这种强行转换是合理的,因为String类型的Array不可能有string类型的下标)
当你的array是个原生的array,可以看到,就不存在这种“BUG”了。