码迷,mamicode.com
首页 > 其他好文 > 详细

关于isset的一点说明

时间:2014-10-09 03:25:27      阅读:290      评论:0      收藏:0      [点我收藏+]

标签:style   http   color   io   os   使用   ar   strong   sp   

  作者: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的一点说明

标签:style   http   color   io   os   使用   ar   strong   sp   

原文地址:http://blog.csdn.net/billfeller/article/details/39898605

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!