PHPでCSVランキング表示機能を作る方法【サンプルコード付き】

php

PHPでCSVランキング表示機能を作る方法

PHPでCSVランキング表示機能を作る方法を紹介します。このサンプルでは、CSVファイルから読み込んだデータを指定した項目の値で降順に並び替え、ランキング形式で表示できます。CSVファイル自体は変更されず、画面上の表示順だけがランキング順に切り替わります。売上ランキングや人気ランキング、アクセス数ランキングなどを表示したい場合に利用できます。

コードについて 本記事のコードはサンプルコードです。ご利用前に必ず動作確認を行ってください。
免責事項 本コードの利用により発生した損害について、当サイトは一切の責任を負いません。

デモ

CSVランキング表示
順位 商品名 売上

コードをコピーして使おう!

<?php

// CSVファイル名です
$csv_file = 'data.csv';

// CSVデータを格納する配列です
$rows = [];

// CSVファイルを読み込みます
if (file_exists($csv_file)) {

    $fp = fopen($csv_file, 'r');

    if ($fp) {

        // ヘッダー行を読み込みます
        fgetcsv($fp);

        // データを配列へ格納します
        while (($data = fgetcsv($fp)) !== false) {

            $rows[] = [
                'name' => $data[0],
                'score' => (int)$data[1]
            ];

        }

        fclose($fp);

    }

}

// 売上の高い順に並び替えます
usort($rows, function($a, $b){

    return $b['score'] <=> $a['score'];

});

?>

<!DOCTYPE html>
<html lang="ja">
<head>

<meta charset="UTF-8">

<title>CSVランキング表示</title>

<style>
body{
    font-family:sans-serif;
    background:#f8fafc;
    margin:40px;
}

.php-csv-ranking_wrap{
    max-width:800px;
    margin:0 auto;
    padding:24px;
    border:1px solid #e5e7eb;
    border-radius:18px;
    background:#ffffff;
}

.php-csv-ranking_title{
    font-size:22px;
    font-weight:bold;
    margin-bottom:20px;
}

.php-csv-ranking_table{
    width:100%;
    border-collapse:collapse;
}

.php-csv-ranking_table th,
.php-csv-ranking_table td{
    border:1px solid #d1d5db;
    padding:10px;
    text-align:left;
}

.php-csv-ranking_table th{
    background:#f1f5f9;
}

.php-csv-ranking_rank{
    font-weight:bold;
    color:#d97706;
}
</style>

</head>
<body>

<div class="php-csv-ranking_wrap">

    <div class="php-csv-ranking_title">
        CSVランキング表示
    </div>

    <table class="php-csv-ranking_table">

        <tr>
            <th>順位</th>
            <th>商品名</th>
            <th>売上</th>
        </tr>

        <?php foreach ($rows as $index => $row): ?>

        <tr>
            <td class="php-csv-ranking_rank">
                <?= $index + 1 ?>位
            </td>

            <td>
                <?= htmlspecialchars($row['name'], ENT_QUOTES, 'UTF-8') ?>
            </td>

            <td>
                <?= htmlspecialchars($row['score'], ENT_QUOTES, 'UTF-8') ?>
            </td>
        </tr>

        <?php endforeach; ?>

    </table>

</div>

</body>
</html>

ファイル構成と設置方法

このサンプルでは、index.phpdata.csv を同じフォルダに配置して使用します。CSVファイルを読み込み、売上の高い順に並び替えてランキング形式で表示します。CSVファイル自体は変更されません。

sample/
├── index.php
└── data.csv
  

index.phpdata.csv をサーバーへアップロードし、ブラウザから index.php にアクセスしてください。CSVデータが売上の高い順に自動で並び替えられ、順位付きのランキングとして表示されます。元の data.csv の内容や並び順は変更されません。


コメント