php函数in_array()被你忽略的东西.

php函数in_array()在未启用严格模式情况下,废话不多说直接上代码,如下:

#php.net官网实例
$array = array(
	'egg' => true,
	'cheese' => false,
	'hair' => 765,
	'goblins' => null,
	'ogres' => 'no ogres allowed in this array'
);
#var_dump( in_array(null, $array)); // true
#var_dump( in_array(false, $array)); // true
#var_dump( in_array(765, $array)); // true
#var_dump( in_array(763, $array)); // true
#var_dump( in_array('egg', $array)); // true
#var_dump( in_array('hhh', $array)); // true
#var_dump( in_array(array(), $array)); // true

上面是官网的实例,下面是个人延伸测试的实例:

/*$false_arr = [11,4, 2,'test',0];
var_dump(in_array('22', $false_arr)); //false
var_dump(in_array('michael', $false_arr)); //true*/
/*$false_arr = [11,4, 2,'test',0];
var_dump(in_array('false', $false_arr)); //true
var_dump(in_array('michael', $false_arr)); //true*/
$false_arr = [11,4, 0,'test',1];
var_dump(in_array(true, $false_arr)); //true
var_dump(in_array('null or test', $false_arr)); //true

总结:在未启用严格模式且在比对结果中有true false 1 0 这些数据时要小心,想清楚是否需要过滤或者启用严格模式做对比。下面的实例是根据官网实例自己总结了一些,剩下的各位来延伸,在我们用in_array过程中,有没有注意呢?以后用in_array()时是否需要考虑true false 0 1 这些参数?感觉以后用in_array都要做一些过滤,都不敢用了.....大神忽略

希望与各位多多请教....

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章