ホームページ > バックエンド開発 > PHPチュートリアル > php array_intersect は array_diff よりも高速です (詳細な手順付き)_PHP チュートリアル

php array_intersect は array_diff よりも高速です (詳細な手順付き)_PHP チュートリアル

WBOY
リリース: 2016-07-21 15:27:40
オリジナル
948 人が閲覧しました

配列 $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

tru​​e

http://www.bkjia.com/PHPjc/323709.html

技術記事

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート