我有文件包含10000個不同的行。我需要從這個文件中取出100個隨機uniq行並將它們寫入另一個文件。什麼是最簡單的方法來使用PHP?從文件中獲取uniq隨機行,並將它們寫入另一個文件,使用php
2
A
回答
3
一個天真方式:
$lines = file('somefile.txt');
shuffle($lines);
$random_lines = array_slice($lines, 0, 10);
注:這完全忽視了系統資源的考慮。
3
一個更快的解決方案大線
function m1($file) {
$fp = fopen($file, "r");
$size = filesize($file);
$list = array();
$n = 0;
while (true) {
fseek($fp, mt_rand(0, $size));
fgets($fp);
$pos = ftell($fp);
isset($list[$pos]) or $s = trim(fgets($fp)) and $list[$pos] = $s and $n ++;
if ($n >= 100)
break;
}
return $list;
}
function m2($file) {
$lines = file($file);
shuffle($lines);
$list = array_slice($lines, 0, 100);
return $list;
}
簡單的基準與接受的解決方案
10000行
Array
(
[m1] => 0.013591051101685 <------ M1 Faster
[m2] => 0.033689975738525
)
100000號線
Array
(
[m1] => 0.014040946960449 <------ M1 Faster
[m2] => 0.094476938247681
)
相關問題
- 1. 選擇cvs文件中的行並將它們寫入另一個csv文件
- 2. 如何從文件中讀取第一行10000行並將它們寫入另一行? PHP
- 3. 從文件中讀取字符並寫入另一個文件
- 4. PHP - 隨機從文件夾中獲取文件並回顯
- 5. 讀取UTF-8文本行並將它們寫入文件
- 6. PHP從文本文件中提取數據並寫入另一個文件
- 7. C#文件 - 從桌面讀取文件並將它們寫入特定文件
- 8. 從多個輸入文件獲取數據並寫入另一個文件
- 9. 從數據庫獲取行並將它們插入另一個
- 10. 從ZIP文件讀取文件並將其寫入到另一個文件
- 11. 從js文件中獲取段落並將它們插入另一個js文件的div中
- 12. 如何獲取日誌並將它們寫入文件
- 13. 用python選擇隨機行並寫入一個新文件
- 14. 文件I/O:從一個文件讀取並寫入另一個文件(Java)
- 15. 從文件讀取多個json obj,然後將它們推入一個數組並將結果寫入文件
- 16. PHP - 從文本文件中獲取文本並在「循環」中使用它們!
- 17. 從文件中提取特定數據並將其寫入另一個文件
- 18. 從文件讀取特定行並寫入python中的另一個文件
- 19. 將文件寫入另一個文件
- 20. 檢測文件中的更改並將它們寫入文件
- 21. 讀取/寫入一個肯定會隨機使用的文件
- 22. 從一個巨大的csv文件中提取字段,並將它們寫入表,文本或csv文件
- 23. PHP讀取並從另一個文件
- 24. 從幾個.txt文件讀取一行並將它們寫入創建的文件
- 25. 從excel中讀取值,並用另一個文件替換它們使用Powershell
- 26. 隨機將文件從一個文件夾移動到另一個文件夾?
- 27. 如何獲取日誌並使用Node.js將它們寫入文件?
- 28. 如何使用導入從文件寫入另一個文件?
- 29. 如何編寫bash腳本來搜索文件中的IP並將它們寫入另一個文件?
- 30. 從文件中讀取行並將它們分成兩個數字並執行計算並將它們寫入文件C++
+我喜歡'這完全忽視系統資源considerations.'一部分...... – Baba
我知道。 **不要在家裏嘗試這個孩子!** –
大聲笑...孩子們喜歡嘗試你要求他們不要做的 – Baba