文字列から単語の配列を作成し、各単語の出現頻度をカウントして、上位21語を選択する関数があります。
私が抱えている問題は、21語をシャッフルする必要があることです。shuffle()を試してみると、foreachループは、単語自体ではなく、出現回数を出力します。
誰かがこれを行う方法を教えてもらえますか?これが私の既存の関数です:
$rawstring = implode(" ", $testimonials);
$rawstring = filterBadWords($rawstring);
// get the word=>count array
$words = array_count_values(str_word_count($rawstring, 1));
// sort on the value (word count) in descending order
arsort($words);
// get the top frequent words
$top10words = array_slice($words, 0, 21);
shuffle($top10words);
foreach($top10words as $word => $value) {
$class = getClass($value);
echo "<a href=\"#\" id=\"" . $word . "\" class=\"" . $class . "\">" . $word . "</a>";
}