【发布时间】:2025-12-06 04:05:02
【问题描述】:
给了我一个包含类似这种结构的文件:
12345 ABC 100M 001 2.0 ABC 1010 4510 A01 451 Apple, Johnny A 150
12345 ABC 100M 011 2.0 ABC 1010 4510 A01 451 Apple, Johnny A 80
12345 ABC 100 011 2.0 ABC 1010 4510 A01 451 Apple, Johnny A 80
我需要从这个文件中获取以下部分:
- 如果它们相似,则将第三列(即 100M)组合在一起
- 将第四列加在一起(如果它们与第三列在同一组中)
- 根据第四列将最后一列相加
我已经设法做到了以下几点:
$List1 = array();
$grab = fopen("file.txt", "r") or die("Can't open file");
$check = fgets($grab);
while(!feof($grab)) {
if (ereg("^[[:digit:]]{5} +ABC +([[:digit:]]{3}[[:alpha:]]?)+ ([[:digit:]]{3})",
$check, $output)) {
if (!in_array($output[1], $List1)) {
array_push($List1, $output[1]);
}
if (!in_array($output[2], $List1)) {
array_push($List1, $output[2]);
}
}
$check = fgets($grab);
}
fclose($grab);
foreach ($List1 as $list) {
print "$list <br/>";
}
我设法以某种方式将第三列组合在一起。
正在显示第四列,但如果它在同一组下,我不确定如何将它组合到第三列中。
而且我不确定如何轻松获取文件/数组中的最后一位。
是否有获取文件中的最后一个并将它们相加的快捷方式?
提前感谢任何可以帮助我的人。
【问题讨论】:
-
我认为没有简单的方法可以做到这一点。我建议您将数据转储到 mysql 并在那里查询。
-
这实际上是一个使用 SQL 似乎很容易解决的问题。你能有一个 SQL 可查询的格式吗?呵呵。