все. Сегодня я увидел пример цикла PHP while
, который я не совсем понимаю.Нужна помощь в понимании образца PHP, а
Пример (Complete code)
// Open XML file
$fp=fopen("note.xml","r");
// Read data
while ($data=fread($fp,4096)) { // Line about which I have questions
xml_parse($parser,$data,feof($fp)) or
die (sprintf("XML Error: %s at line %d",
xml_error_string(xml_get_error_code($parser)),
xml_get_current_line_number($parser)));
}
Выражение $data=fread($fp,4096)
внутри скобок while
цикла, кажется, не меняется. Это всего лишь одна инструкция присваивания. Как заканчивается этот цикл? Функция xml_parse($parser,$data,feof($fp))
может закончиться, когда синтаксический анализ завершен, но я не вижу, как это повлияет на условие теста для цикла while
. Я чувствую, что синтаксический разбор XML-файла будет повторяться бесконечно.
Кроме того, когда есть выражение присваивания в качестве проверяемого условия для цикла, мы действительно просто хотим увидеть, если RIGHT стороны выходов назначения TRUE
или FALSE
, чтобы определить, следует ли закончить цикл? Я сомневаюсь в этом, потому что тогда он создавал бы бесконечный цикл для этого примера, поскольку $data
, после назначения, всегда будет возвращать TRUE
.
Благодаря
Когда fread достигает конца файла, он возвращает значение null в $ data и становится false, так что while цикл остановится – SIDU