您的位置:首页
关于isset的一点说明
2017-06-04 10:38
183 查看
作者: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']));
相关文章推荐
- 关于在组件GIS开发中使用Python的一点补充说明
- 关于Extent属性的一点说明
- 关于整型类型提升的一点说明
- 关于《0 bug ---- C/C++商用工程之道》印刷质量的一点说明
- 关于《0 bug ---- C/C++商用工程之道》的一点说明
- 关于对if(rs.next())的一点说明!!
- 关于WinCE6.0补丁包的一点说明
- 关于C++的一点说明
- 关于C语言的一点说明
- 关于利用任务状态段TSS进行进程切换的一点说明
- 关于outlook 2003 PST文件大小一点说明 推荐
- C/C++中关于CONST关键字的一点说明
- 关于delphi Com+调用C# DLL的一点说明
- 关于pcAnywhere使用的一点说明
- 关于delphi Com+调用C# DLL的一点说明
- 关于触发器嵌套和递归的一点说明
- 【技巧】Silverlight3中关于OutOfBrowser的一点说明
- 关于asp.net无刷新联动的一点补充说明
- 【转自元宝兄】关于delphi Com+调用C# DLL的一点说明
- 关于 formValidator 的一点说明,来自网络和手册