ホームページ >バックエンド開発 >PHPチュートリアル >serializearray 大きな配列を処理する場合の PHP の array_diff 関数の効率の問題
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 のアイデアに従って書かれたメソッド
*/ 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 つの配列の比較のみを処理します。
上記では、serializearray の内容を含め、大きな配列を処理する際の PHP の array_diff 関数の効率の問題について紹介しました。PHP チュートリアルに興味のある友人に役立つことを願っています。