php数组 这是什么情况?

恶魔果实 发布于 2014/07/09 15:47
阅读 161
收藏 0
PHP
$a=array(
	'list'=>
		array(
			'left'=>'adawdaw')
	);
if($a['list']['left']['aaaa']){
	exit('1');     //为什么输出这个??
}
exit('0');



加载中
2
暗夜在火星
暗夜在火星

我觉得可以这样解释更合理一点:

$a['list']['left']的值为一字符串,而当获取$a['list']['left']['aaaa']时,下标aaaa将会先转换成整型,再取下标为0的值,即第一个字符为“a",所以最终的结果为”a",结果输出 exit('1');

$left = $a['list']['left'];
$index = intval('aaaa');
var_dump($left[$index]);

以上代码输出结果为"a"。

可以查看官方对于string类型的说明:http://cn2.php.net/manual/zh/language.types.string.php

摘录关键说明如下:

。非整数类型下标会被转换成整数。

Warning

PHP 的字符串在内部是字节组成的数组。因此用花括号访问或修改字符串对多字节字符集很不安全。


显然,string也是数组,只不过下标只能用整数。

0
Narky
Narky
你给定的key不存在,则自动使用索引值来取,默认索引值从0开始,$a['list']['left'][0]是存在的即字符串的第一个字符,所以判断成立
0
暗夜在火星
暗夜在火星
补充一下,这应该归到PHP字符串的问题,与数组无关。
返回顶部
顶部