欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

[]php处理俩个文本的效率有关问题

程序员文章站 2022-06-03 09:01:37
...
[求助]php处理俩个文本的效率问题
/*

==> 1.txt a:123
b:1333
c:333

==> 2.txt a:3333
aa:3433
c:323dfa

==> result.txt a:123:3333
c:333:323dfa

*/


$file_1 = "1.txt";
$file_2 = "2.txt";

$f = fopen("$file_1", 'r') or die("Cann't Open the file.");

while (!(feof($f))) {
$line = explode(':', trim(fgets($f)));
$f2 = fopen("$file_2", 'r') or die("Cann't Open the file.");
while (!(feof($f2))) {
$line2 = explode(':', trim(fgets($f2)));
if ($line[0] == $line2[0]) {
$line[] = $line2[1];
$aaaa = implode(":",$line);
$output_file = fopen("./result.txt", 'a');
echo "$aaaa\n";
fwrite($output_file, "$aaaa\n");
fclose($output_file);
}

}
}
?>

如代码所示,将1.txt和2.txt整理输出到一个新文件result.txt, 效果如注释部分。我写的代码处理的条数少的时候没发现问题,当俩个文本都有十几万条记录的时候,效率就出大事了,要整理10来个小时。初学PHP,求大师指点。
------解决思路----------------------
$t = file('data/1.txt', FILE_IGNORE_NEW_LINES);
foreach($t as $v) {
list($k, $v) = explode(':', $v);
$a[$k][] = $v;
}
$t = file('data/2.txt', FILE_IGNORE_NEW_LINES);
foreach($t as $v) {
list($k, $v) = explode(':', $v);
$b[$k][] = $v;
}
foreach($a as $k=>$v) {
if(isset($b[$k])) {
file_put_contents('data/result.txt', join(':', array_merge(array($k), $v, $b[$k])). PHP_EOL, FILE_APPEND);
}
}
[]php处理俩个文本的效率有关问题
没有嵌套的循环,不会太慢的
[]php处理俩个文本的效率有关问题

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

相关文章

相关视频