【问题标题】: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))

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

非常感谢。

【问题讨论】:

    标签: php arrays file loops lines


    【解决方案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
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-07
      • 2012-06-27
      相关资源
      最近更新 更多