首页 > 代码库 > 关于isset的一点说明
关于isset的一点说明
作者:zhanhailiang 日期:2014-10-08
今天遇到一个很奇怪的bug,测试如下:
<?php $a = ‘abc‘; var_dump(isset($a[‘code‘])); // 理论上应该是False,但是确是TRUE
查了下手册说明:
Example #2 isset() on String Offsets PHP 5.4 changes how isset() behaves when passed string offsets. <?php $expected_array_got_string = ‘somestring‘; var_dump(isset($expected_array_got_string[‘some_key‘])); var_dump(isset($expected_array_got_string[0])); var_dump(isset($expected_array_got_string[‘0‘])); var_dump(isset($expected_array_got_string[0.5])); var_dump(isset($expected_array_got_string[‘0.5‘])); var_dump(isset($expected_array_got_string[‘0 Mostel‘])); ?> Output of the above example in PHP 5.3: bool(true) bool(true) bool(true) bool(true) bool(true) bool(true) Output of the above example in PHP 5.4: bool(false) bool(true) bool(true) bool(true) bool(false) bool(false)
总结如下:使用isset前最好先使用is_array/is_string判断下变量类型以避免不同PHP版本出现不一致性问题,还是那句老话,PHP是弱类型语言,但是弱类型并不表示没有类型,如下:
<?php $a = ‘abc‘; var_dump(is_array($a) && isset($a[‘code‘]));
关于isset的一点说明
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。