PHP 5 для начинающих

Печать

и возвращает только один символ из связанного с данным дескриптором файла; если

функция достигает конца файла, то она возвращает False. По существу, она работает

так же, как и fread() — вызов:

$one_char = fgetc($fp)

эквивалентен вызову:

$one_char = fread($fp,1)

Модифицируем первоначальный счетчик с использованием в нем функции fgetc(). Для этого можно использовать такой код:<?php

//hit_counter03.php $counter_file = "./count.dat";

if(!($fp = fopen($counter_file, "r"))) die ("Невозможно открыть файл $counter_file."); do {

$one_char = fgetc($fp); $counter .= $one_char; } while($one_char); $counter = (int) $counter; fclose($fp);

Чтобы считать все содержимое файла данных, используется цикл while, потому что функция fgetc() считывает из файла только один символ за раз. Кроме того, необходимо знать, когда прекращать чтение, поэтому последний считанный символ записывается в холостую переменную, и когда она будет равна False, цикл чтения можно прекратить. Однако в таком коде есть один дефект. Как только из файла будет считано значение "0" или " ", условие цикла не выполнится и цикл чтения прекратится. Если планируется, что значение счетчика посещений будет превышать 9, то данная особенность может оказаться серьезной проблемой.

Существует другой способ определить момент завершения цикла чтения ------ использование функции feof() .

Функция feof() служит одной простой цели:она возвращает True, когда достигает конца заданного файла (или если возникает ошибка), и False — в противном случае. Функция принимает только один аргумент ------ дескриптор файла:

feof($fp)

Поэтому в качестве условия цикла можно использовать логическое отрицание и проверить, таким образом, не достиг ли указатель конца данного файла:<?php

//hit_counter04.php $counter_file = "./count.dat";

if(!($fp = fopen($counter_file, "r"))) die ("Невозможно открыть файл $counter_file."); while(!feof($fp)) $counter .= fgetc($fp); $counter = (int) $counter; fclose($fp);

$counter++;

echo "Вы - посетитель № $counter.";

$fp = fopen($counter_file, "w"); fwrite($fp, $counter);

fclose($fp); ?>

Функция feof() сообщает оператору while, когда необходимо завершить цикл (когда функция fgetc() в процессе посимвольного считывания достигает конца




звукосниматель для гитары