2013-10-21 38 views
3

我有一個文本文件,它可以在線路的數量各不相同,但是總會有24片審議了各行條目。循環讀取文件的每一行以自己的數組

這些條目中的4個是日期,但它們不是以正常的YYYY-MM-DD格式示例:「2013-03-11T20:35:33 + 00:00」,所以我使用substr並且都很好。不過目前我從文件中的所有數據傳送到一個表,然後取每個日期做SUBSTR和更新的領域,然後通過所有此表到另一個但是隨着日期字段類型爲「DATE」作爲第一次輪他們能夠」 t因「2013-03-11T20:35:33 + 00:00」。

我得到AT是點,我想讀每一行到一個數組的SUBSTR適用於日期這總是在相同的位置,然後,數組傳遞到該表中,所以數據類型爲列可以是從開始日期。

我似乎無法弄清楚如何循環輪文件中的每一行。我可以得到第一行(因爲我需要刪除它),我已經讀過,獲取特定的行是不可能的或困難的,但我只是需要它循環遍歷它們的週期性。

我現在有

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

哪些循環爲表中的每一行,但我不知道如何或是否可以這樣implimented的文件行。

非常感謝。

回答

13

您使用的數據庫函數來遍歷數據庫表 - 這很好。 To get file contents into an array, use file().例子:

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

foreach($contents as $line) { 
    echo $line . "\n"; 
} 
+1

啊謝謝你,這已經把我的代碼下來篇幅很長。 – Vereonix

+0

又一個簡單的問題,有沒有插入所有的數組到錶行,而不必指定每個列名和變量的方法嗎?所以有(「INSERT INTO table $ Array」) – Vereonix

+0

如果你使用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

所有的SUBSTR()的東西可以用的strtotime()和日期()我敢肯定變得更加容易:

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