循环将文件的每一行读取到自己的数组中[重复]

Posted

技术标签:

【中文标题】循环将文件的每一行读取到自己的数组中[重复]【英文标题】:Loop read each line of a file to its own array [duplicate] 【发布时间】:2013-10-30 11:56:26 【问题描述】:

我有一个文本文件,它的行数可以不同,但​​每行总是有 24 个选项卡经过深思熟虑的条目。

这些条目中有 4 个是日期,但它们不是正常的 YYYY-MM-DD 格式示例:“2013-03-11T20:35:33+00:00”所以我使用 substr 就可以了。然而,目前我将文件中的所有数据传递到一个表,然后将每个日期都做 substr 并更新字段,然后将所有这个表传递给另一个表,但日期字段类型为“DATE”,因为他们可以' t 由于“2013-03-11T20:35:33+00:00”。

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

我似乎无法弄清楚如何为文件中的每一行循环。我可以得到第一行(因为我需要删除它),我已经读到获得特定行是不可能或很难的,但我只需要它来循环遍历它们。

我现在有

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

为表中的每一行循环,但我不知道如何或是否可以为文件行实现。

非常感谢。

【问题讨论】:

【参考方案1】:

您正在使用数据库函数来循环访问数据库表 - 这很好。 To get file contents into an array, use file(). 示例:

$filename = 'info.txt';
$contents = file($filename);

foreach($contents as $line) 
    echo $line . "\n";

【讨论】:

啊,谢谢,这大大缩短了我的代码长度。 又一个简单的问题,有没有一种方法可以将所有数组插入到表行中,而无需指定每个列名和变量?所以有 ("INSERT INTO table $Array") 如果你使用 PDO(你应该使用 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')【参考方案2】:

我敢肯定,strtotime() 和/或 date() 可以让所有 substr() 变得更容易:

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

【讨论】:

以上是关于循环将文件的每一行读取到自己的数组中[重复]的主要内容,如果未能解决你的问题,请参考以下文章

将我文件的每一行的值分配给一个数组[重复]

Haskell:将文件中的每一行插入到列表中

尝试通过Excel文件的每一行循环一个数组

为数组 2 的每一行计算数组 1 的一行之间的距离,然后移动到数组 1 的下一行并重复

如何将文件逐行读入node.js中的数组[重复]

试图让文本文件的每一行成为一个数组列表