大きな配列を処理する場合の PHP の array_diff() 関数の効率の問題_PHP チュートリアル
- WBOYオリジナル
- 2016-07-21 15:22:221037ブラウズ
cisaがPHP公式BUGページに投稿する方法
コードをコピー コードは以下の通りです:
/**
* PHP 5.2.6 以降の array_diff() 関数が大きな配列を処理する際に時間がかかる問題を解決
*
* Compilation: http://www.CodeBit.cn
* Source: http:/ /bugs.php.net/47643
*/
function array_diff_fast($data1, $data2) {
$ data1 = array_flip($data1);
$data2 = array_flip($data2)
foreach($data2 as $hash => $key) {
if (isset($data1[$hash]); ) unset($data1 [$hash]);
}
return array_flip($data1);
?> /**
* PHP 5.2.6 以降で大規模な配列を処理する場合の array_diff() 関数の効率の問題を解決します
* ChinaUnix フォーラムのモデレータ、hightman のアイデアに従って書かれたメソッド
*
* 主催: http:/ /www.CodeBit.cn
* 参照: http://bbs.chinaunix.net/viewthread.php?tid=938096&rpid=6817036&ordertype=0&page=1#pid6817036
*/ function array_diff_fast($firstArray, $secondArray) { // 2 番目の配列のキーと値の関係を変換します $secondArray = array_flip($secondArray); // 最初の配列をループします
foreach($firstArray as $key => $value) {
// If最初の配列の値が 2 番目の配列に存在します
if (isset($secondArray[$value])) {
// 最初の配列の対応する要素を削除します
unset($firstArray[$key])
}
}
return $firstArray;
}
?>
このメソッドは 2 番目の配列のキーと値のみを交換するため、より効率的です。
注: PHP の組み込みの array_diff() 関数は複数の配列を処理できますが、この記事で提供されるメソッドは 2 つの配列の比較のみを処理します。
http://www.bkjia.com/PHPjc/324734.html
www.bkjia.com
true
http://www.bkjia.com/PHPjc/324734.html
技術記事
cisa さんが PHP 公式 BUG ページにコピーしたメソッドは以下の通りです: ?php /** * PHP 5.2.6 以降の array_diff() 関数が大きな配列を処理するときに * 非常に時間がかかる問題を解決...
声明:この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。