ホームページ  >  記事  >  バックエンド開発  >  大きな配列を処理する場合の PHP の array_diff() 関数の効率の問題_PHP チュートリアル

大きな配列を処理する場合の PHP の array_diff() 関数の効率の問題_PHP チュートリアル

WBOY
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

tru​​e

http://www.bkjia.com/PHPjc/324734.html
技術記事

cisa さんが PHP 公式 BUG ページにコピーしたメソッドは以下の通りです: ?php /** * PHP 5.2.6 以降の array_diff() 関数が大きな配列を処理するときに * 非常に時間がかかる問題を解決...

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:wsdl を使用して PHP_PHP チュートリアルで標準 Web サービス実装コードを作成する次の記事:wsdl を使用して PHP_PHP チュートリアルで標準 Web サービス実装コードを作成する

関連記事

続きを見る