array_count_values()は、アレイを引数として取得し、キーが配列に表示される唯一の要素であり、値が元の配列に表示される回数である新しい配列を返す組み込みのphp関数です。関数の構文は次のとおりです。
array_count_values(array $array): array
この関数の戻り値は連想配列であり、各要素の鍵は元の配列の値であり、値はアレイに表示される回数です。
Webサイトのアクセスログを含むユーザーIDの配列があり、ユーザーごとの訪問数を数えて、そのためのヒストグラムを生成したいとします。これが例です:
<?php
// これがウェブサイトログから得られるユーザーアクセスデータだと仮定します
$userVisits = ['user1', 'user2', 'user3', 'user1', 'user4', 'user1', 'user2'];
// 使用 array_count_values ユーザーごとに訪問数を取得する機能
$visitCounts = array_count_values($userVisits);
// 頻度データ配列を印刷します
print_r($visitCounts);
?>
上記のコードでは、 array_count_values()関数は、各ユーザーが$ uservisitsアレイに表示される回数をカウントします。出力は次のようになります。
Array
(
[user1] => 3
[user2] => 2
[user3] => 1
[user4] => 1
)
上記の例によると、各ユーザーのアクセス周波数データを取得しました。次に、このデータをバーチャートの描画に適したデータ形式にフォーマットできます。通常、バーチャートのデータ形式は、キーがカテゴリ(この場合はユーザー)であり、値はそのカテゴリの頻度(つまり、訪問数)です。
たとえば、次のコードを使用して、周波数データをバーチャートを描画するために必要な形式に変換できます。
<?php
// 頻度データ配列が既に取得されているとします $visitCounts
$visitCounts = array_count_values($userVisits);
// バーチャートに変換するために必要なデータ形式
$barChartData = [];
foreach ($visitCounts as $user => $count) {
$barChartData[] = [
'label' => $user,
'value' => $count
];
}
// バーチャートデータを印刷します
print_r($barChartData);
?>
出力は、各ユーザーのキー価値ペアと、バーチャートの生成に適した訪問数を含む配列になります。
Array
(
[0] => Array
(
[label] => user1
[value] => 3
)
[1] => Array
(
[label] => user2
[value] => 2
)
[2] => Array
(
[label] => user3
[value] => 1
)
[3] => Array
(
[label] => user4
[value] => 1
)
)
これで、バーチャートを描画するのに適した周波数データの配列があります。次に、chart.jsなどの一般的なJavaScriptライブラリを使用して、バーチャートを生成できます。上記のデータをフロントエンドJavaScriptコードに渡し、これらのライブラリを使用してバーチャートを描画できます。
たとえば、chart.jsの使用は次のように実装できます。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>バーチャートの例</title>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
</head>
<body>
<canvas id="barChart"></canvas>
<script>
var ctx = document.getElementById('barChart').getContext('2d');
var barChart = new Chart(ctx, {
type: 'bar',
data: {
labels: ['user1', 'user2', 'user3', 'user4'],
datasets: [{
label: '訪問数',
data: [3, 2, 1, 1],
backgroundColor: ['#FF5733', '#33FF57', '#3357FF', '#F0F33F'],
borderColor: ['#FF5733', '#33FF57', '#3357FF', '#F0F33F'],
borderWidth: 1
}]
},
options: {
scales: {
y: {
beginAtZero: true
}
}
}
});
</script>
</body>
</html>
このHTMLファイルは、PHPで生成された周波数アレイからのタグとデータがあるバーチャートを表示します。