PHP가 수백만 개의 데이터를 빠르게 정렬하는 방법에 대한 자세한 설명

*文
풀어 주다: 2023-03-19 09:04:01
원래의
2652명이 탐색했습니다.

일상 업무를 하다 보면 사이트 회원들에게 단체 메시지를 보내라는 알림을 현장 편지, 휴대전화 문자 메시지, 이메일 등으로 자주 받습니다. 사용자 목록은 대개 다른 동료가 제공하는 것이므로, 필연적으로 중복이 발생합니다. 반복적인 전송을 피하기 위해 정보를 보내기 전에 그들이 제공한 사용자 목록을 중복 제거해야 합니다. 다음으로 uid 목록을 사용하여 php 배열을 사용하여 중복 제거하는 방법에 대해 이야기하겠습니다. 그것이 모두에게 도움이 되기를 바랍니다.

행이 100만 개가 넘는 uid 목록을 얻으면 형식은 다음과 같습니다.

10001000 
10001001 
10001002 
...... 
10001000 
...... 
10001111  
로그인 후 복사

사실 PHP 배열의 특성을 이용하면 중복 항목을 쉽게 정리할 수 있습니다. PHP 배열의 정의: PHP의 배열은 실제로 순서가 지정된 맵입니다. 맵은 값을 키에 연결하는 유형입니다. 이 유형은 여러 가지 방법으로 최적화되어 있으므로 실제 배열이나 목록(벡터), 해시 테이블(맵 구현), 사전, 세트, ​​스택, 큐 및 더 많은 가능성으로 처리될 수 있습니다. 배열 요소의 값은 다른 배열일 수도 있습니다. 트리 구조와 다차원 배열도 허용됩니다.
PHP 배열에서 키는 인덱스라고도 하며 이 기능을 사용하여 중복 항목을 정렬할 수 있습니다. 샘플 코드는 다음과 같습니다.

<?php
//定义一个数组,用于存放排重后的结果 
$result = array(); 
//读取uid列表文件 
$fp = fopen(&#39;test.txt&#39;, &#39;r&#39;); 
while(!feof($fp)) 
{ 
$uid = fgets($fp); 
$uid = trim($uid); 
$uid = trim($uid, "\r"); 
$uid = trim($uid, "\n"); 
if($uid == &#39;&#39;) 
{ 
continue; 
} 
//以uid为key去看该值是否存在 
if(empty($result[$uid])) 
{ 
$result[$uid] = 1; 
} 
} 
fclose($fp); 
//将结果保存到文件 
$content = &#39;&#39;; 
foreach($result as $k => $v) 
{ 
$content .= $k."\n"; 
} 
$fp = fopen(&#39;result.txt&#39;, &#39;w&#39;); 
fwrite($fp, $content); 
fclose($fp); 
?>  
로그인 후 복사

20줄이 넘는 코드로 백만 개가 넘는 항목을 검색할 수 있습니다. sorted 데이터 중복이 제거되고 효율성도 좋고 매우 실용적입니다. 휴대폰 번호와 이메일도 이 방법으로 중복 제거될 수 있습니다.
또한 이 방법을 사용하여 두 개의 파일을 중복 제거할 수도 있습니다. 두 개의 uid 목록 파일이 있는 경우 형식은 위의 uid 목록과 동일합니다.

<?php 
//定义数组,用于存放排重后的结果 
$result = array(); 
//读取第一个uid列表文件,放入$result_1 
$fp = fopen(&#39;test_1.txt&#39;, &#39;r&#39;); 
while(!feof($fp)) 
{ 
$uid = fgets($fp); 
$uid = trim($uid); 
$uid = trim($uid, "\r"); 
$uid = trim($uid, "\n"); 
if($uid == &#39;&#39;) 
{ 
continue; 
} 
//以uid为key写入$result,如有重复就会覆盖 
$result[$uid] = 1; 
} 
fclose($fp); 
//读取第二个uid列表文件,并进行排重操作 
$fp = fopen(&#39;test_2.txt&#39;, &#39;r&#39;); 
while(!feof($fp)) 
{ 
$uid = fgets($fp); 
$uid = trim($uid); 
$uid = trim($uid, "\r"); 
$uid = trim($uid, "\n"); 
if($uid == &#39;&#39;) 
{ 
continue; 
} 
//以uid为key去看该值是否存在 
if(empty($result[$uid])) 
{ 
$result[$uid] = 1; 
} 
} 
fclose($fp); 
//$result里保存的就排重以后的结果,可以输出到文件,代码省略 
?>
로그인 후 복사


잘 생각해 보세요. 이 배열 기능을 사용하면 작업에서 더 많은 문제를 해결할 수 있다는 것을 찾기가 어렵습니다.

위 내용은 PHP가 수백만 개의 데이터를 빠르게 정렬하는 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿