注意isset在版本php5.3和php5.4的兼容
请看代码:
<?php
$a = 'asdasdasdasd';
var_dump(isset($a['somekey']));
上图这个代码, 在php5.3系统中会返回TRUE, 而php5.4会返回false, 我相信大家都会常常用isset来判断数组是否存在某个key.
这里的原理是, 如果$a是字符串, php5.3中会把somekey转为int, 也就是0, $a[0]也就等于字符’a’, 所以会返回TRUE, 这个问题在php5.4被修复了, 如果$a是字符串, 检测到key不是数字会返回false, 不会再强制转换…
所以在php5.3系统中, 最好这样判断
<?php
$a = 'asdasdasdasd';
var_dump(isset($a['somekey']));
if (is_array($a) && isset($a['somekey']))
#some code....