Функция fget c () для чтения всего файла - PullRequest
0 голосов
/ 07 марта 2020

Я пытаюсь прочитать весь файл, используя fget c () с do.. while l oop. Я знаю, что это не рекомендуется, но это должно работать. Содержимое counter.dat , я не знаю, что делать , но вывод, который я получаю, 0 . Почему 0?

<?php
 $f = "counter.dat";
 if (!($fp = fopen($f,"r"))) {
      die("Can Not Open $f");
 }
 do {
  $one_char = fgetc($fp);
  $counter = $one_char;
  $counter .= $one_char;
 } while($one_char);
 fclose($fp);
 $counter = (int) $counter;
 echo $counter;
?>

1 Ответ

2 голосов
/ 07 марта 2020

Вы перезаписываете $counter каждый раз через l oop, прежде чем добавить к нему. И на последней итерации $one_char будет FALSE, поэтому вы устанавливаете $counter = FALSE;, и преобразование его в целое число возвращает 0.

Вам также нужно инициализировать $counter для пустая строка в начале.

Поскольку файл не содержит целое число, вы не должны использовать (int) $counter. Просто выведите значение $counter.

Сделайте это следующим образом:

$counter = "";
while ($one_char = fgetc($fp)) {
    $counter .= $one_char;
}
echo $counter;

Это выйдет из l oop немедленно, когда он достигнет EOF, он не будет пытаться использовать FALSE значение из последней итерации.

...