PHP を使用してページングで重複のないランダムなデータを実現する方法

PHPz
リリース: 2023-04-21 09:18:22
オリジナル
767 人が閲覧しました

PHP は、Web 開発で広く使用されているスクリプト言語です。強力で使いやすく効率的であり、さまざまな Web アプリケーションの構築に広く使用されています。これらのアプリケーションを開発する場合、多くの場合、データをページに表示し、データがランダムで重複しないようにする必要があるため、特別な注意が必要です。この記事では、PHP を使用してランダムな非重複データのページングを実現する方法を紹介します。

1. ページングの実装

ページングは​​データを表示する一般的な方法です。通常、大きなデータ セットをいくつかの小さなデータ ブロックに分割します。各小さなデータ ブロックは 1 ページと呼ばれます。これにより、表示が容易になるだけでなく、ページの読み込み速度も向上します。 PHP では、LIMIT キーワードを使用してページングを実装できます。

以下は簡単なページング コードの例です:

<?php
$page_size = 10;
$page_num = isset($_GET[&#39;page_num&#39;]) ? $_GET[&#39;page_num&#39;] : 1;
$start = ($page_num - 1) * $page_size;
$sql = "SELECT * FROM my_table LIMIT $start, $page_size";
//执行sql语句并获取数据
?>
ログイン後にコピー

上記のコードでは、$page_size は各ページのデータ量を表し、$page_num は現在のページ番号を表し、$start は現在のページデータの開始点。ページングは​​、LIMIT キーワードを使用して簡単に実装できます。

2. 重複しないランダムなデータを取得する

大規模なデータセット内の複数のデータをランダムに取得する必要がある場合は、MySQL の RAND() 関数を使用できます。例:

SELECT * FROM my_table ORDER BY RAND() LIMIT 10;
ログイン後にコピー

上記のコードは、my_table テーブルから 10 個のデータをランダムに取得することを示していますが、RAND() 関数が使用されているため、各実行はランダムであり、データは繰り返されません。ただし、このメソッドでページングが必要な場合は、実行ごとに結果が異なり、ページングを実現するにはプログラムで処理する必要があるため、さらに困難になります。

以下に実装アイデアを示します:

1. まず、データ セット全体の合計行数を取得し、それを変数に保存します。次のコードを使用できます:

$sql_count = "SELECT COUNT(*) AS count FROM my_table";
//执行sql语句并获取总行数
$count = $result['count'];
ログイン後にコピー

2. 取得するデータ行の数を計算します:

$random_count = $page_size * 3;//获取3页数据的总行数
ログイン後にコピー

3. 十分な行が取得されるまで、次のコードをループで実行します:

$start = rand(0, $count - 1);//生成随机起始点
$sql = "SELECT * FROM my_table LIMIT $start, $random_count";
//执行sql语句并获取数据
ログイン後にコピー

4. 取得したデータを重複排除し、ランダムに並べ替えます:

$data = array_unique($data);//去重
shuffle($data);//随机排序
ログイン後にコピー

5. 取得したデータから必要な行数を取り出すだけです。

最後に、ページにデータを表示し、ページングを実装します。完全なコードは次のとおりです。

<?php
$page_size = 10;//每页数据量
$page_num = isset($_GET[&#39;page_num&#39;]) ? $_GET[&#39;page_num&#39;] : 1;//当前页数
$random_count = $page_size * 3;//获取3页的数据量
$start = ($page_num - 1) * $page_size;//分页起始行数
$sql_count = "SELECT COUNT(*) AS count FROM my_table";//获取总行数的sql语句
$sql = "SELECT * FROM my_table LIMIT $start, $random_count";//获取随机数据的sql语句
//执行sql语句并获取数据
//计算总行数
$count = $result_count[&#39;count&#39;];
$data = array();
while (count($data) < $random_count) {
    $start = rand(0, $count - 1);//生成随机起始点
    $sql = "SELECT * FROM my_table LIMIT $start, $random_count";
    //执行sql语句并获取数据
    $data = array_merge($data, $result_data);
}
$data = array_unique($data);//去重
shuffle($data);//随机排序
$data_page = array_slice($data, ($page_num - 1) * $page_size, $page_size);//分页
//展示数据
?>
ログイン後にコピー

このようにして、ページング、ランダム、および重複のないデータ取得を実現できます。もちろん、この方法にはパフォーマンスの問題がいくつかあります。クエリ ステートメントを複数回実行する必要があるため、データ量が多い場合はプログラムのパフォーマンスに影響を与える可能性があります。

3. 概要

ページング、ランダム、および重複のないデータ取得は、Web アプリケーション開発のプロセスにおいて非常に一般的な要件です。これは、この記事で説明する方法で簡単に実現できます。もちろん、実際の開発プロセスでは、さまざまなキャッシュ技術やデータベースの最適化などの手法を組み合わせて、プログラムのパフォーマンスをさらに向上させることもできます。

以上がPHP を使用してページングで重複のないランダムなデータを実現する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート