<? $x1=array(1=>111,2=>222,3=>333); $x2=array(1=>777,2=>111,3=>222,4=>333) $y=in_array($x1,$x2); //第1个参数是数组。 echo $y; echo "\r\n";?>
in_array の最初のパラメータは単一値のデータである必要があります
配列の場合は、array_intersect を使用して交差を取得する必要があります
in_array の最初のパラメータは単一である必要があります-valued data
配列の場合は、array_intersect を使用して交差を取得する必要があります
http://docs.php.net/manual/zh/function.in-array.php
更新ログ
バージョン 説明
PHP バージョン 4.2.0 4.2.0 より前では、needle を配列にすることはできませんでした。
PHP 公式中国語ドキュメント、それは何を意味しますか?
まあ、マニュアルをよく読んでください
は配列にすることができます。マニュアルの最後の例は次のとおりです。
in_array の最初のパラメータは単一値データである必要があります
配列の場合、array_intersect を使用して交差を取得する必要があります
<? $x1=array(array("a","b"),"c"); $y1=in_array(array("a","b"),$x1); //在二维数组中找。 echo $y1; echo "\r\n"; $x2=array(array(array("1","2"),"b"),"c"); $y2=in_array(array("1","2"),$x2); //在三维数组中找 echo $y2; echo "\r\n";?>
変更点:
2 次元配列では検索は 1 を返します。
3 次元配列では検索では 0 が返されるのはなぜですか?
変更:
2 次元配列では検索は 1 を返します。
3 次元配列では検索では 0 が返されるのはなぜですか?
echo in_array(array(array("1","2"),"b"),array(array(array("1","2"),"b"),"c"))?' true':'false';
in_array 関数を手書きすれば、その理由がわかるでしょう...
in_array の最初のパラメータは単一値のデータである必要があります
配列の場合、array_intersect は次のようになりますつまり、最初のパラメーターが配列の場合、交差
を取得するとき、
多次元配列の 1 つの次元 (つまり 2 番目のパラメーター) のみを見つけることができます。
比較は最初の次元でのみ実行されます
最初のパラメータの配列が構造体と一致する場合
$a = array(array("a","b"),"c");var_dump( in_array(array("a","b"), $a) ); //bool(true)var_dump( in_array(array("b","a"), $a) ); //bool(false)
比較は最初の次元でのみ実行されます
最初のパラメータが配列の場合、構造体も一緒に照合されます
$a = array(array("a","b"),"c");var_dump( in_array(array("a","b"), $a) ); //bool(true)var_dump( in_array(array("b","a"), $a) ); //bool(false)
<?$x2=array(array(array("1","2"),"b"),"c"); $y2=in_array(array("1","2"),$x2); //在三维数组中找 echo $y2; echo "\r\n";?>
$x2 = array(
array(array("1","2"),"b"),
"c"
);
最初の次元は次のようになります
array("1", 「2」) もちろん見つからない
初心者には理解できない
特別な状況下では可能です。