PHP配列の値の出現回数をカウントし、foreachループで各値を1回だけ表示する方法
PHPでは、配列の中に同じ値が複数回含まれることがあります。例えば、名前のリストから「David」という名前が何回登場するかを調べたい場合などです。こうした重複値の集計には、組み込み関数array_count_values()を使うと簡単に実現できます。
ここでは、次のような配列を例に考えます。
$listOfNames = array('John','David','Mike','David','Mike','David');
この配列に対して、各値の出現回数を以下のように表示することを目標とします。
Array ( [John] => 1 [David] => 3 [Mike] => 2 )
array_count_values()関数とは
array_count_values()は、引数に渡した配列内の値をキーとし、その出現回数を値とした連想配列を返す組み込み関数です。重複データの頻度を集計したい場面で非常に便利な関数です。
サンプルコード
実際のPHPコードは以下の通りです。
<!DOCTYPE html>
<html>
<body>
<?php
$listOfNames = array('John','David','Mike','David','Mike','David');
$frequencyOfEachName = array_count_values($listOfNames);
print_r($frequencyOfEachName);
?>
</body>
</html>
実行結果
上記のコードを実行すると、次のような出力が得られます。
Array ( [John] => 1 [David] => 3 [Mike] => 2 )
foreachループで各値を1回だけ表示する
array_count_values()で取得した連想配列をforeachループで処理すれば、重複のない各値とその出現回数を1回ずつきれいに表示できます。
<?php
$listOfNames = array('John','David','Mike','David','Mike','David');
$frequencyOfEachName = array_count_values($listOfNames);
foreach ($frequencyOfEachName as $name => $count) {
echo $name . ' の出現回数: ' . $count . "<br>";
}
?>
実行結果:
John の出現回数: 1 David の出現回数: 3 Mike の出現回数: 2
このように、array_count_values()とforeachループを組み合わせることで、配列内の値を効率的にカウントし、各値を1回だけ表示することが可能です。ログ解析やアンケート集計など、重複データを扱うさまざまな場面で活用できます。
-
PHPの配列からランダムな値を取得する方法|array_rand()関数の使い方
PHPで配列からランダムな値を取得するには、array_rand()関数を使います。この関数は配列からランダムなキーを返すため、そのキーを指定して対応する値にアクセスするのが基本の流れです。 array_rand()関数とは array_rand()は、配列から1つ以上のランダムなキーを取り出すPHPの組み込み関数です。構文は以下の通りです。 array_rand( array $array, int $num = 1 ) : int|string|array 第1引数: 対象となる配列を指定します。 第2引数: 取得するキーの個数を指定します(省略可、デフォルトは1)。2以上を指定した場合
-
jQueryのserializeArray()で送信したフォームデータをPHP側で受け取る方法
PHPでserializeArrayによるPOST値を取得するには、jQueryのserializeArray()メソッドを使用します。このメソッドは、.serialize()と同様にフォームおよびフォーム内のすべての要素をシリアライズしますが、戻り値としてJSON形式のデータ構造を返す点が大きな特徴です。 serializeArray()の戻り値について serializeArray()は、「name」と「value」のペアを持つオブジェクトの配列を返します。イメージとしては以下のような構造です。 [ { name: name, value: 入力された名前 }, { name: a