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

serializearray 大きな配列を処理する場合の PHP の array_diff 関数の効率の問題

WBOY
リリース: 2016-07-29 08:47:24
オリジナル
1191 人が閲覧しました

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 つの配列の比較のみを処理します。
上記では、serializearray の内容を含め、大きな配列を処理する際の PHP の array_diff 関数の効率の問題について紹介しました。PHP チュートリアルに興味のある友人に役立つことを願っています。


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