PHPでは、ジェネレーターは非常に強力なツールであり、メモリ内で一連のオンデマンド計算を生成できます。特に大量のデータを処理するのに適しており、メモリオーバーフローを効果的に回避できます。この記事では、ジェネレーターを使用してデータを前処理し、PHPのarray_count_values関数を使用して周波数をカウントする方法について説明します。
ジェネレーターは、すべてのデータを一度にメモリにロードせずにデータを1つずつ生成できるPHPの特別なイテレーターです。ジェネレーターは、収量キーワードを介して値を返します。これにより、値が返されなくなるまで各反復で次の値を計算できます。
特定のURLから取得した一連の生データがあるとします(代わりにM66.NETを使用します)。文字Aを含む単語のみを取得するなど、特定の基準を満たすデータをフィルタリングする必要があります。次に、 array_count_valuesを使用して、基準を満たす各単語の頻度をカウントします。
簡単な例コードは次のとおりです。
<?php
// からのシミュレーションURLデータを取得するプロセス
function fetch_data_from_url() {
// このデータが由来すると仮定しますURL
$data = [
"apple", "banana", "apricot", "avocado", "cherry",
"apple", "apricot", "apple", "mango", "grape"
];
// 発電機を返します,一度に1つの単語を返します
foreach ($data as $word) {
yield $word;
}
}
// ジェネレーターを使用した前処理データ,文字を除外します"A"の言葉
function process_data() {
foreach (fetch_data_from_url() as $word) {
if (strpos($word, 'a') !== false) {
yield $word;
}
}
}
// ジェネレーターを使用してデータを処理します
$processed_data = iterator_to_array(process_data());
// 使用 array_count_values 統計周波数
$word_frequencies = array_count_values($processed_data);
// 出力統計
print_r($word_frequencies);