>백엔드 개발 >PHP 문제 >PHP를 사용하여 페이징에서 중복되지 않은 무작위 데이터를 얻는 방법

PHP를 사용하여 페이징에서 중복되지 않은 무작위 데이터를 얻는 방법

PHPz
PHPz원래의
2023-04-21 09:06:33800검색

PHP는 웹 개발에 널리 사용되는 스크립트 언어로, 강력하고 사용하기 쉽고 효율적이며 다양한 웹 애플리케이션을 구축하는 데 널리 사용됩니다. 이러한 애플리케이션을 개발할 때 데이터를 페이지에 표시하고 데이터가 무작위이고 반복되지 않도록 해야 하는 경우가 많으므로 특별한 주의가 필요합니다. 이 기사에서는 PHP를 사용하여 중복되지 않은 무작위 데이터를 페이징하는 방법을 소개합니다.

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. 요약

페이징, 무작위 및 중복되지 않는 데이터 수집은 웹 애플리케이션 개발 과정에서 매우 일반적인 요구 사항입니다. 이는 이 문서에 설명된 방법을 통해 쉽게 달성할 수 있습니다. 물론 실제 개발 과정에서 다양한 캐싱 기술, 데이터베이스 최적화 및 기타 방법을 결합하여 프로그램 성능을 더욱 향상시킬 수도 있습니다.

위 내용은 PHP를 사용하여 페이징에서 중복되지 않은 무작위 데이터를 얻는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.