gpt4 book ai didi

php - 如何使用 PHP 从最大的制表符分隔文件中获取有用信息?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:04:04 25 4
gpt4 key购买 nike

我有以下问题。我有包含更多 100 000 条记录的制表符分隔文件。每行有 6 个或更多元素,但我想从任何行中获取 2 个元素。

tabdelemited 文件的示例结构:

    a1  1       b1      c1      11      111
a2 2 b2 c2 12 112
a3 3 b3 c3 13 113
a4 4 b4 c4 14 114
...........................................................................

以下代码以数组形式返回此文件中的所有元素:

$f4 = fopen("FILE.TXT", 'r');
while (($line = fgetcsv($f4, 0, "\t")) !== FALSE)
if ($line)
$arr4[] = $line;
fclose($f4);

超过 100 000 行的代码非常非常慢。我怎样才能得到他们需要的元素和算法才能快速?

输出结果:

Array
(
[0] => Array
(
[0] => a1 //first column
[1] => b1 //third column
)

[1] => Array
(
[0] => a2
[1] => b2
)

[2] => Array
(
[0] => a3
[1] => b3
)

[3] => Array
(
[0] => a4
[1] => b4
)
)

提前致谢。

最佳答案

如果我对您的问题的理解正确,您想要从 CSV 文件的每一行中检索任意数量的列中的 2 列。为此:

$f4 = fopen('FILE.TXT', 'r');
while (($line = fgetcsv($f4, 0, "\t")) !== FALSE) {
$arr4[] = array(
$line[2], // Use whatever indexes you need for the columns
$line[3] // here.
);
}
fclose($f4);

您可以选择将最大长度指定为参数 #2 到 fgetcsv() 以加快处理速度。参见 here了解更多信息。

编辑:此外,如果您的列索引是连续的(例如 2、3 或 4、5),请使用 array_slice()可能会更快,但您必须对其进行基准测试才能确定。

关于php - 如何使用 PHP 从最大的制表符分隔文件中获取有用信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9100749/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com