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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Помогите понять while + fgetcsv

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
alecs
Отправлено: 15 Ноября, 2017 - 13:34:18
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Окт. 2017  


Помог: 0 раз(а)




Всем привет, вот учебный код

$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 указатель смещается на следующую строку файла?
 
 Top
Строитель Модератор
Отправлено: 15 Ноября, 2017 - 15:13:41
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




alecs пишет:
почему при каждом цикле while указатель смещается на следующую строку файла?
Собственно while тут не при чём, он просто выполняется, если результат выражения в его скобках не равен false. Указатель в данном примере смещается функцией fgetcsv(), именно она читает построчно файл, возвращает либо массив либо false, и перемещает указатель.

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


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Окт. 2017  


Помог: 0 раз(а)




О то что надо, благодарю за ответ. как while работает я более менее понимаюУлыбка а вот не понятно было почему смещался указатель... теперь вроде врубился... короче файл в состоянии open указатель после выдачи строки перемещается в конец ее а при следующей итерации выдается следующая строка так как указатель был перемещен в конец первой строки и файл в состоянии open так? и так далее до тех пор пока не будет EOF ?? все врубился... а то немогу дальше изучать пока не пойму как работаетУлыбка))

(Отредактировано автором: 15 Ноября, 2017 - 16:24:00)

 
 Top
Строитель Модератор
Отправлено: 15 Ноября, 2017 - 16:19:22
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




alecs пишет:
и так далее до тех пор пока не будет EOF ?
Да.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB