我正在尝试验证是否filter_var_array
过滤了某些输入。如果过滤器失败或未设置变量,则
根据 PHP 文档filter_var_array
返回。false
null
我创建了一个小测试来检查如何在数组中搜索 (null ,false)
,我得到了一些奇怪的结果
$tmp = $tmp = array(null, 1, 'test', 100, false);
$arr = array(null, false);
$x = in_array(array_map('strtolower',$arr), array_map('strtolower', $tmp), true);
var_dump($x);
$x = in_array(array_map('strtolower', $tmp), array_map('strtolower',$arr), true);
var_dump($x);
输出:
boolean false
boolean false
难道我做错了什么?
编辑:@sg在评论中给出了答案。
做到这一点的方法是使用array_intersect
.
$tmp = array(null, 1, 0, FALSE, 'test', NULL, 100, false);
$arr = array(null, false);
$x = array_intersect($tmp, $arr);
var_dump($x);
输出:
array (size=4)
0 => null
3 => boolean false
5 => null
7 => boolean false
重要说明:
1. 如果 $needle 是数组。in_array
搜索全数组匹配
2.array_intersect
类型严格