多次元配列に保存された大量のデータセットがあります。構造の例は次のとおりです。
Array
(
[1] => Array
(
[0] => motomummy.com
[1] => 1921
[2] => 473
)
[4] => Array
(
[0] => kneedraggers.com
[1] => 3051
[2] => 5067
)
)
また、mysqlデータベースにcurrently
最大80Kのドメイン名を含むテーブルがあります。このリストは、おそらく最大10,000以上のドメイン名で毎月増加します。目標は、Array [] [0](ドメイン名)をmysqlデータベースと比較し、一意の値のみを含む保存された値(ただし、キーの保存は重要ではありません)を持つ配列を返すことです。
配列全体ではなく、最初のインデックスのみを比較したいことに注意してください。
初期の多次元配列は、サイズが非常に大きいと想定されています(おそらく、10万から1000万の結果のどこかにあります)。データベースに含まれていないデータを取り戻すための最良の方法は何ですか?
私が今していることは、データベースからのドメインの完全なリストを配列に格納し、次の関数を使用して、初期配列の各値をデータベース配列と比較することです。これはひどく遅く、明らかに非効率的です。
// get result of custom comparison function
$clean = array_filter($INITIAL_LIST, function($elem) {
$wordOkay = true;
// check every word in "filter from database" list, store it only if not in list
foreach ($this->domains as $domain) {
if (stripos($elem[0], $domain) !== false) {
$wordOkay = false;
break;
}
}
return $wordOkay;
});
この時点で、いくつかの擬似コードまたは実際のコードでさえ非常に役立ちます。