循环读取文件的每一行到它自己的数组中

18

我有一个文本文件,它的行数可以不同,但每行始终有24个包含制表符的条目。

其中4个条目是日期,但它们不是常规的YYYY-MM-DD格式,例如:"2013-03-11T20:35:33+00:00",所以我使用substr函数处理,这很好。然而,目前我将文件中的所有数据传递到一个表格中,然后取出每个日期进行substr操作并更新字段,然后再将整个表格传递到另一个表格,但第一次由于存在"2013-03-11T20:35:33+00:00",所以日期字段类型无法更改为"DATE"。

我的意思是,我想将每行数据读入数组,并对其中始终处于相同位置的日期应用substr函数,然后将该数组传递给表格,因此列的数据类型可以从一开始就设置为DATE。

但我似乎无法想出如何循环处理文件中的每一行。我可以获取第一行(因为需要删除它),我已经了解到获取特定行可能是不可能或困难的,但我只需要循环遍历它们即可。

我目前拥有:

while ($DateRow = mysql_fetch_array($DateQuery, MYSQL_ASSOC))

这个循环是为每个表格行而设计的,但我不知道如何或是否可以将其用于文件行。

非常感谢。

2个回答

36

1
啊,谢谢,这大大地减少了我的代码长度。 - Vereonix
还有一个快速的问题,是否有一种方法可以将整个数组插入到表行中,而无需指定每个列名和变量?因此,使用(“INSERT INTO table $Array”)即可。 - Vereonix
如果您使用PDO(应该使用,因为mysql函数已被弃用),那么很容易 - 在堆栈上搜索即可。否则,当您循环遍历文件内容时,创建像这样的数组:$columnnames[] = $your_column$value_to_insert[] = $your_value,然后当您想要插入时,将您的数组implode$str_columns = implode(',', $columnnames)$str_values = implode('\',\'', $value_to_insert),然后调用INSERT INTO table ($str_columns) VALUES('$str_values') - scrowler

3

使用 strtotime() 和/或 date() 函数可以更轻松地处理 substr() 相关内容,我确信这一点:

$lines = file('/path/to/file.txt');
foreach($lines as $row) {
    //whatever here
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接