>  Q&A  >  본문

CSV 파일의 역방향 PHP 읽기

<p>CSV 파일을 읽는 PHP 스크립트가 있는데 마지막 줄부터, 즉 역순으로 읽으려고 합니다. </p> <pre class="brush:php;toolbar:false;"><?php $f = fopen("./data/data-esp8266-$idluf-$currentdata.csv", "r"); fgets($f); while (($line = fgetcsv($f)) !== false) { $행 = $라인[0]; $cells = 폭발(";",$row); echo "<tr>n"; foreach($cell을 $cell로) { echo "<td><a style='text-장식:none;color:#fff;' class='tooltip' data-tool=' $cell'>" . /a></td>n"; } echo "</tr>n"; } fclose($f); ?></pre> <p><br /></p>
P粉512729862P粉512729862408일 전576

모든 응답(2)나는 대답할 것이다

  • P粉118698740

    P粉1186987402023-08-09 12:56:44

    읽고 싶은 파일이 구분 기호로 줄 바꿈만 있는 "간단한" 파일인 경우 뒤에서 앞으로 읽는 것은 매우 간단합니다. 그러나 CSV는 필드 및 행 구분 기호, 따옴표(따옴표) 및 이스케이프 문자를 포함하는 더 복잡한 형식입니다.

    와 같은 데이터가 나타날 수 있습니다. 으아아아

    이것은 완벽하게 유효한 CSV이지만 현재 포럼에서 제안된 대부분의 솔루션은 데이터를 역으로 읽는 데 문제가 있습니다.

    가장 신뢰할 수 있는 방법은 먼저 파일의 시작 부분부터 데이터를 읽은 다음 이 정보를 사용하여 데이터를 역순으로 읽는 것입니다. 가장 간단한 버전은 모든 것을 배열에 직접 넣은 다음 다음과 같이 배열을 역순으로 읽는 것입니다.

    으아아아

    그러나 대용량 파일을 처리하는 경우 모든 데이터를 저장해야 하므로 메모리 제한이 발생할 수 있습니다.

    대안은 파일을 한 번 읽은 다음 레코드 시작 부분에 파일 오프셋을 저장한 다음 해당 오프셋을 사용하여 다시 뒤로 반복하는 것입니다.


    으아아아

    파일을 두 번 통과해야 한다는 절충안이 있지만 메모리 제약이 있는 경우 이 작업을 수행해야 합니다.

    이 모든 것을 고려해 볼 때 더 나은 옵션은 가능하면 데이터베이스가 데이터를 쉽게 재정렬할 수 있는 데이터베이스에 데이터를 저장하는 것입니다. 이 코드는 이미 데이터베이스 관련 기능을 어느 정도 재구현했지만 상황은 훨씬 더 나쁩니다.

    회신하다
    0
  • P粉513316221

    P粉5133162212023-08-09 10:41:12

    또는 for 루프를 사용할 수도 있습니다

    으아아아

    이 방법은 array_reverse() 함수를 기반으로 하는 다른 방법보다 빠릅니다.

    회신하다
    0
  • 취소회신하다