配列 $a と配列 $b の差の数が必要な場合は、 count(array_diff($a, $b)) の代わりに count($a) - count(array_intersect($a, $b)) を使用する必要があります。
前者は後者よりも高速であり、大規模な配列ではより明らかです。
1.array_intersect 関数
array array_intersect ( array $array1 , array $array2 [, array $ ... ] )
array_intersect() は、他のすべての値にも出現する array1 内のすべての項目を含む配列を返します。パラメータ配列内。キー名は変更されないことに注意してください。
#1 array_intersect() の例
コードをコピー コードは次のとおりです:
$array1 = array("a" => "green", "red", "blue ");
$array2 = array("b" => "green", " yellow", "red");
$result = array_intersect($array1, $array2);
?>
これにより $result が作成されます
Array
(
[a] => green
[0] => red
)
2. 自己実装された array_intersect() 関数は、元の PHP 関数 array_intersect() より 5 倍高速です
コードをコピー コードは次のとおりです:
/**
*
* カスタム array_intersect
* 1 次元配列の共通部分を探す場合、この関数はシステム array_intersect より 5 倍高速です
*
* @param array $arr1
* @param array $arr2
* @著者 LIUBOTAO 2010 -12-13 11:40:20 AM
*
*/
function my_array_intersect($arr1,$arr2)
{
for($i=0;$i
{
$temp[]=$arr1[$i];
}
for($i=0;$i{
$temp[]=$ arr2[$i];
sort($temp);
for($i=0;$iif($temp) [$i]==$ temp[$i+1])
$get[]=$temp[$i];
return $get;
$array1 = array("green", "red" , "青");
$array2 = array("緑", "黄", "赤");
print_r(my_array_intersect($array1, $array2)); " ;
array_diff — 配列の差分を計算します
array array_diff ( array $array1 , array $array2 [, array $ ... ] )
array_diff() は、以下を含む配列を返します。 array1 内のすべての要素 ただし、他のパラメータ配列にない値。キー名は変更されないことに注意してください。
#1 array_diff() の例
コードをコピー
コードは次のとおりです:
$array1 = array("a" => "green", "red", "青", "赤"); $array2 = array("b" => "緑", "黄", "赤"); $result = array_diff($array1, $array2); print_r($ result);
$array1 に複数回出現する値は同じように扱われ、出力結果は次のようになります:
コードは次のとおりです:
Array
(
[1] => blue
) 注: (string) $elem1 === (string) $elem2 の場合にのみ、2 つのユニットは同一とみなされます。つまり、文字列式が同じ場合です。
注: この関数は多次元配列の 1 次元のみをチェックすることに注意してください。もちろん、array_diff($array1[0], $array2[0]); を使用して、より深い次元を確認することもできます。
http://www.bkjia.com/PHPjc/323709.html
www.bkjia.com
true
http://www.bkjia.com/PHPjc/323709.html
技術記事
配列 $a と配列 $b の差の数が必要な場合は、 count(array_diff($a, $b)) の代わりに count($a) - count(array_intersect($a, $b)) を使用する必要があります。大きいところでは前が後より速いです...