>백엔드 개발 >PHP 튜토리얼 >파일 콘텐츠 중복 제거 및 정렬을 구현하기 위한 PHP용 샘플 코드 공유

파일 콘텐츠 중복 제거 및 정렬을 구현하기 위한 PHP용 샘플 코드 공유

黄舟
黄舟원래의
2017-09-07 10:03:072311검색

이 기사에서는 phplinux sort 명령을 사용하여 각각 파일 내용의 중복 제거 및 정렬을 수행하고 완전한 데모 코드를 제공합니다.

1. 테스트 파일 만들기

Write 1000000 숫자, 한 줄에 하나의 숫자

<?php
$file = &#39;user_id.txt&#39;;
$num = 1000000;
$tmp = &#39;&#39;;
for($i=0; $i<$num; $i++){    
$tmp .= mt_rand(0,999999).PHP_EOL;    
if($i>0 && $i%1000==0 || $i==$num-1){
        file_put_contents($file, $tmp, FILE_APPEND);        
        $tmp = &#39;&#39;;
    }
}?>

파일 줄 수 보기

wc -l user_id.txt
 1000000 user_id.txt

2.php는 처리가 필요하므로 중복 제거 및 정렬

을 구현합니다. 행 데이터가 1000000이므로 실행 중 메모리 부족을 방지하기 위해 PHP에서 사용할 수 있는 메모리는 256m로 설정됩니다.

<?php/**
 * 文件内容去重及排序
 * @param String $source    源文件
 * @param String $dest      目标文件
 * @param String $order     排序顺序
 * @param Int    $sort_flag 排序类型
 */function fileUniSort($source, $dest, $order=&#39;asc&#39;, $sort_flag=SORT_NUMERIC){

    // 读取文件内容
    $file_data = file_get_contents($source);    // 文件内容按行分割为数组
    $file_data_arr = explode(PHP_EOL, $file_data);    // 去除空行数据
    $file_data_arr = array_filter($file_data_arr, &#39;filter&#39;);    // 去重
    $file_data_arr = array_flip($file_data_arr);    $file_data_arr = array_flip($file_data_arr);    // 排序
    if($order==&#39;asc&#39;){
        sort($file_data_arr, $sort_flag);
    }else{
        rsort($file_data_arr, $sort_flag);
    }    // 数组合拼为文件内容
    $file_data = implode(PHP_EOL, $file_data_arr).PHP_EOL;    // 写入文件
    file_put_contents($dest, $file_data, true);

}// 过滤空行function filter($data){
    if(!$data && $data!==&#39;0&#39;){        return false;
    }    return true;
}// 设置可使用内存为256mini_set(&#39;memory_limit&#39;, &#39;256m&#39;);$source = &#39;user_id.txt&#39;;$dest = &#39;php_sort_user_id.txt&#39;;

fileUniSort($source, $dest);?>

중복 제거 및 정렬된 파일 보기

wc -l php_sort_user_id.txt 
  632042 php_sort_user_id.txt

head php_sort_user_id.txt 
012357891112...

3. Linux 정렬 명령은 중복 제거 및 정렬을 구현합니다.

linux 정렬 명령은 텍스트 파일을 줄별로 정렬하는 데 사용됩니다

형식:

sort [OPTION]... [FILE]...


매개변수 설명:

-u 중복 제거
-n 숫자 정렬 유형
-r 내림차순
-o 출력 파일 경로
sort를 사용하여 중복 제거 및 정렬 수행

sort -uno linux_sort_user_id.txt user_id.txt

중복 제거 및 정렬 보기 최종 파일
아아아아

요약: 파일 중복 제거 및 정렬은 php 또는 linux sort 명령을 사용하여 수행할 수 있습니다. 실행 시간은 크게 다르지 않지만 파일 작업의 경우 시스템 명령을 직접 사용하는 것이 더 쉽습니다.

이 기사에서는

phplinux sort 명령을 사용하여 각각 파일 내용의 중복 제거 및 정렬을 수행하고 완전한 데모 코드를 제공합니다.

위 내용은 파일 콘텐츠 중복 제거 및 정렬을 구현하기 위한 PHP용 샘플 코드 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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