Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Помогите понять while + fgetcsv
Форумы портала PHP.SU » » Вопросы новичков » Помогите понять while + fgetcsv

Страниц (1): [1]
 

1. alecs - 15 Ноября, 2017 - 13:34:18 - перейти к сообщению
Всем привет, вот учебный код

$row = 1;
$handle = fopen("book.csv", "r");
while (($data = fgetcsv($handle, 1000, ";")) !==FALSE){
// Кол-во полей в строке
$num = count($data);
echo "<p> $num полей в строке $row:<br/></p>\n";
$row++;
for ($c=0; $c < $num; $c++){
echo $data[$c] . "<br/>\n";
}
}

fclose($handle);

Объясните почему, за счет чего указатель переходит на следующую строку в файле. не врубаюсь while Это же не foreach. почему при каждом цикле while указатель смещается на следующую строку файла?
2. Строитель - 15 Ноября, 2017 - 15:13:41 - перейти к сообщению
alecs пишет:
почему при каждом цикле while указатель смещается на следующую строку файла?
Собственно while тут не при чём, он просто выполняется, если результат выражения в его скобках не равен false. Указатель в данном примере смещается функцией fgetcsv(), именно она читает построчно файл, возвращает либо массив либо false, и перемещает указатель.

Чтобы понятнее было, как работает while, напишите пример по проще. Например, этот пример вам понятен?
PHP:
скопировать код в буфер обмена
  1. $i = 1;
  2. while ($i <= 10) {
  3.     echo $i++;  /* выводится будет значение переменной
  4.                    $i перед её увеличением
  5.                    (post-increment) */
  6. }
(это пример из офф.мануала)
3. alecs - 15 Ноября, 2017 - 16:17:23 - перейти к сообщению
О то что надо, благодарю за ответ. как while работает я более менее понимаюУлыбка а вот не понятно было почему смещался указатель... теперь вроде врубился... короче файл в состоянии open указатель после выдачи строки перемещается в конец ее а при следующей итерации выдается следующая строка так как указатель был перемещен в конец первой строки и файл в состоянии open так? и так далее до тех пор пока не будет EOF ?? все врубился... а то немогу дальше изучать пока не пойму как работаетУлыбка))
4. Строитель - 15 Ноября, 2017 - 16:19:22 - перейти к сообщению
alecs пишет:
и так далее до тех пор пока не будет EOF ?
Да.

 

Powered by ExBB FM 1.0 RC1