2013-10-21 4 views
3

텍스트 파일이 있습니다. 줄 수는 다양하지만 각 줄마다 항상 24 개의 탭 심의 항목이 있습니다.루프는 파일의 각 라인을 자체 배열로 읽어들입니다.

이 항목 중 4 개는 날짜이지만 정상적인 YYYY-MM-DD 형식은 아닙니다 (예 : "2013-03-11T20 : 35 : 33 + 00 : 00"). 따라서 substr과 thats를 모두 사용합니다. . 그러나 현재는 파일의 모든 데이터를 테이블로 전달한 다음 각 날짜를 substr로 가져 와서 필드를 업데이트하여이 테이블을 다른 것으로 전달하지만 날짜 필드 유형은 "DATE"로 처음으로 전달할 수 있습니다. t : '2013-03-11T20 : 35 : 33 + 00 : 00'으로 인해

요점은 다음과 같습니다. 각 행을 배열로 읽어 들여 항상 동일한 위치에있는 날짜에 substr을 적용하여 배열을 테이블로 전달하므로 데이터가 전달됩니다. 열의 유형은 DATE에서 가져올 수 있습니다.

나는 파일의 각 줄마다 라운드를 반복하는 방법을 알아낼 수 없다. 첫 번째 줄을 가져올 수 있으므로 (삭제해야 함) 특정 줄을 가져 오는 것이 불가능하거나 어렵다는 것을 읽었습니다. 그러나 주기성을 통해 반복해야합니다.

나는 현재 테이블의 각 행에 대해 루프

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

을 가지고 있지만 나는 방법을 알고하지 않거나이이 파일 라인에 대한 implimented 할 수있는 경우.

감사합니다.

답변

13

당신은 데이터베이스 테이블을 통해 반복하기 위해 데이터베이스 기능을 사용하고 있습니다. 괜찮습니다. To get file contents into an array, use file(). 예 :

SUBSTR() 물건의 모든이 한 strtotime() 날짜() 나는 확신으로 쉽게 만들 수있는
$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'와 같은 배열이 생성되면 배열을 삽입 할 때'$ str_columns $ INSERT INTO 테이블 ($ str_columns)을 호출한다. VALUES ('$ str_values')'$ str_values ​​'= implode ('$ str_values ​​' –

2

:

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