循环将文件的每一行读取到自己的数组中[重复]
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
【讨论】:
以上是关于循环将文件的每一行读取到自己的数组中[重复]的主要内容,如果未能解决你的问题,请参考以下文章