filter_var_array
入力をフィルタリングしたかどうかを検証しようとしています。フィルターが失敗した場合、または変数が設定されていない場合は
、PHP doc の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
厳密な型です