php实现文件内容去重及排序的示例代码分享(对Vector中的值进行排序)
本文將使用 php 和 linux sort 命令兩種方法,分別實(shí)現(xiàn)文件內(nèi)容去重及排序,并提供完成演示代碼。
1.創(chuàng)建測(cè)試文件
寫入1000000個(gè)數(shù)字,每行一個(gè)數(shù)字
<?php
$file = 'user_id.txt';
$num = 1000000;
$tmp = '';
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 = '';
}
}?>
登錄后復(fù)制
查看文件行數(shù)
wc -l user_id.txt 1000000 user_id.txt
登錄后復(fù)制
2.php實(shí)現(xiàn)去重及排序
因要處理1000000行數(shù)據(jù),因此將php可使用的內(nèi)存設(shè)置為256m,防止執(zhí)行過程中內(nèi)存不足。
<?php/**
* 文件內(nèi)容去重及排序
* @param String $source 源文件
* @param String $dest 目標(biāo)文件
* @param String $order 排序順序
* @param Int $sort_flag 排序類型
*/function fileUniSort($source, $dest, $order='asc', $sort_flag=SORT_NUMERIC){
// 讀取文件內(nèi)容
$file_data = file_get_contents($source); // 文件內(nèi)容按行分割為數(shù)組
$file_data_arr = explode(PHP_EOL, $file_data); // 去除空行數(shù)據(jù)
$file_data_arr = array_filter($file_data_arr, 'filter'); // 去重
$file_data_arr = array_flip($file_data_arr); $file_data_arr = array_flip($file_data_arr); // 排序
if($order=='asc'){
sort($file_data_arr, $sort_flag);
}else{
rsort($file_data_arr, $sort_flag);
} // 數(shù)組合拼為文件內(nèi)容
$file_data = implode(PHP_EOL, $file_data_arr).PHP_EOL; // 寫入文件
file_put_contents($dest, $file_data, true);
}// 過濾空行function filter($data){
if(!$data && $data!=='0'){ return false;
} return true;
}// 設(shè)置可使用內(nèi)存為256mini_set('memory_limit', '256m');$source = 'user_id.txt';$dest = 'php_sort_user_id.txt';
fileUniSort($source, $dest);?>
登錄后復(fù)制
查看去重及排序后的文件
wc -l php_sort_user_id.txt 632042 php_sort_user_id.txt head php_sort_user_id.txt 012357891112...
登錄后復(fù)制
3.linux sort命令實(shí)現(xiàn)去重及排序
linux sort命令用于文本文件按行排序
格式:
sort [OPTION]... [FILE]...
登錄后復(fù)制
參數(shù)說明:
-u 去重
-n 數(shù)字排序類型
-r 降序
-o 輸出文件的路徑
使用sort執(zhí)行去重及排序
sort -uno linux_sort_user_id.txt user_id.txt
登錄后復(fù)制
查看去重及排序后的文件
wc -l linux_sort_user_id.txt 632042 linux_sort_user_id.txt head linux_sort_user_id.txt 012357891112...
登錄后復(fù)制
總結(jié):使用php或linux sort命令都可以實(shí)現(xiàn)文件去重及排序,執(zhí)行時(shí)間上相差不大,但建議對(duì)于文件類的操作,直接使用系統(tǒng)命令實(shí)現(xiàn)更為簡(jiǎn)單。
本文將使用 php 和 linux sort 命令兩種方法,分別實(shí)現(xiàn)文件內(nèi)容去重及排序,并提供完成演示代碼。
以上就是php實(shí)現(xiàn)文件內(nèi)容去重及排序的示例代碼分享的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注風(fēng)君子博客其它相關(guān)文章!
總結(jié)
以上是生活随笔為你收集整理的php实现文件内容去重及排序的示例代码分享(对Vector中的值进行排序)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle rac em cluste
- 下一篇: http协议前端常识(MQTT协议)