【发布时间】:2014-05-30 13:47:18
【问题描述】:
我有一个制表符分隔的文本文件 (TXT),其中包含超过 100 万 行(记录)和大约 400 MB 文件大小
例子
demo 123333 new
demo2 3444442 new
demo4 56666632 old
demo5 455552333 new
所以现在我想找出 2nd tab 等于 "56666632"
的行还将该行的所有制表符值转换为数组,如:
data[0]=>demo4
data[1]=>56666632
data[2]=>old
注意:我不想使用 while 和 foreach,因为 txt 文件中的行数非常多
我正在使用 while 循环尝试这段代码:
$file = "feed.txt";
$cols = array();
ini_set('auto_detect_line_endings', true);
$fh = fopen($file, 'r');
while (($line = fgetcsv($fh, 1000, "\t")) !== false)
{
if($line[1]=="56666632")
{
var_dump($line);
break;
}
}
【问题讨论】:
-
如果您明确排除允许您在 PHP 中逐行读取文件的选项,那么您可能仅限于操作系统搜索命令,如 grep.... 但为什么不你想使用循环吗?
-
I want without while and foreach because very large number of line in txt file。这对我来说似乎是错误的,当你有大文件时,你想逐行这样做,否则你会陷入内存问题。
标签: php