>백엔드 개발 >PHP 튜토리얼 >내 PHP `while (!feof())` 루프가 전체 파일을 읽지 못하는 이유는 무엇입니까?

내 PHP `while (!feof())` 루프가 전체 파일을 읽지 못하는 이유는 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-06 13:07:12434검색

Why Doesn't My PHP `while (!feof())` Loop Read the Entire File?

PHP While 루프(!feof())가 완전한 데이터를 출력하지 않습니다

.txt의 전체 내용을 읽고 표시하려고 할 때 while 루프(!feof())를 사용하여 파일을 실행하면 루프가 출력을 완료하지 않아 파일의 끝을 건너뛰거나 잘리는 문제가 사용자에게 발생할 수 있습니다. 파일. 이 문제는 최종 읽기 작업 전에 EOF(파일 끝) 테스트가 발생할 때 발생합니다.

이 문제를 해결하려면 읽기 프로세스의 일부로 EOF 검사를 수행하도록 루프 구조를 수정하는 것이 좋습니다. . 향상된 코드 조각은 다음과 같습니다.

$handle = fopen("item_sets.txt", "r");

if ($handle) {
    while (($buffer = fgets($handle, 4096)) !== false) {
        $trimmed = trim($buffer);
        echo $trimmed;
    }
} else {
    echo 'Unexpected error opening file';
}
fclose($handle);

또한 @를 사용하여 오류를 억제하는 것보다 명시적으로 오류를 처리하는 것이 좋습니다. 개선된 코드 조각:

$line_count = 0;

$handle = fopen("item_sets.txt", "r");

if ($handle) {
    while (($buffer = fgets($handle, 4096)) !== false) {
        $trimmed = trim($buffer);
        echo $trimmed;
        $line_count++;
    }
} else {
    echo 'Unexpected error opening file';
}
fclose($handle);

echo PHP_EOL.PHP_EOL.PHP_EOL.'Lines read from file = ' . $line_count;

제공된 데이터 파일로 이 코드를 테스트하면 파일의 마지막 항목을 포함하여 올바른 출력이 생성됩니다.

[aa_fade_revolver]weapon_revolver"          "1"

위 내용은 내 PHP `while (!feof())` 루프가 전체 파일을 읽지 못하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.