ホームページ >バックエンド開発 >PHPチュートリアル >ファイルコンテンツの重複排除と並べ替えを実装するための PHP のサンプルコード共有

ファイルコンテンツの重複排除と並べ替えを実装するための PHP のサンプルコード共有

黄舟
黄舟オリジナル
2017-09-07 10:03:072282ブラウズ

この記事では、php コマンドと linux sort コマンドを使用して、それぞれファイル内容の重複排除と並べ替えを実装し、完全なデモ コードを提供します。

1. テストファイルを作成します

1行に1つの数値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 sort コマンドは重複排除と並べ替えを実装します

linux sort コマンドは行ごとにテキスト ファイルを並べ替えるのに使用されます

形式:

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


パラメータの説明:

-u 重複排除
-n 数値ソートタイプ
-r 降順
-o 出力ファイルパス

sort を使用して重複排除と並べ替えを実行

sort -uno linux_sort_user_id.txt user_id.txt


重複排除と並べ替えを表示

リーリー


概要: ファイルの重複排除と並べ替えは、php または linux sort コマンドを使用して実行できます。実行時間はそれほど変わりませんが、ファイル操作の場合はシステム コマンドを直接使用する方が簡単であることが推奨されます。

この記事では、phpコマンドとlinuxsortコマンドを使用して、それぞれファイルコンテンツの重複排除と並べ替えを実現し、完全なデモコードを提供します。

以上がファイルコンテンツの重複排除と並べ替えを実装するための PHP のサンプルコード共有の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。