关于isset的一点说明

Posted llguanli

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于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的一点说明的主要内容,如果未能解决你的问题,请参考以下文章

关于might_sleep的一点说明

关于Python学习的一点说明

关于viewWithTag的一点说明

关于might_sleep的一点说明---CONFIG_DEBUG_ATOMIC_SLEEP

关于使用扩展和字符串操作,foreach 循环的一点说明

关于VS2017安装的一点扩充说明(15.5)