ホームページ >バックエンド開発 >PHPチュートリアル >ファイルコンテンツの重複排除と関連コンテンツの並べ替えの詳細な説明

ファイルコンテンツの重複排除と関連コンテンツの並べ替えの詳細な説明

jacklove
jackloveオリジナル
2018-06-08 17:08:261746ブラウズ

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

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

1000000 の数値を 1 行に 1 つずつ書き込みます。

<?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 Deduplication
-n 数値ソート タイプ
-r 降順
-o 出力ファイルへのパス

ソートを使用して重複排除を実行し、並べ替え

sort -uno linux_sort_user_id.txt user_id.txt


重複排除および並べ替えられたファイルの表示

wc -l linux_sort_user_id.txt 
  632042 linux_sort_user_id.txt

head linux_sort_user_id.txt 
012357891112...


概要: ファイルの重複排除と並べ替えは、php または Linux sort コマンドを使用して実行できますが、実行時間は異なります。大きなことではありませんが、ファイル操作の場合はシステム コマンドを直接使用する方が簡単であるためお勧めします。

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

この記事では、ファイル コンテンツの重複排除と並べ替えに関連する内容について説明します。詳細については、PHP 中国語 Web サイトを参照してください。

関連する推奨事項:

mysql の大文字と小文字を区別する構成の問題の解釈

PHP を使用して配列をマージし、キー値を保持する方法

phpcurl を使用してマルチプロセスのダウンロード ファイル クラスを実装する方法


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

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