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都要做一些過濾,都不敢用了.....大神忽略

希望與各位多多請教....

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