0

filter_var_array入力をフィルタリングしたかどうかを検証しようとしています。フィルターが失敗した場合、または変数が設定されていない場合は
、PHP doc のfilter_var_array戻り値に従ってください。falsenull

配列内で (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厳密な型です

4

1 に答える 1