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. Помогите разобраться.
Покинул форум
Сообщений всего: 139
Дата рег-ции: Янв. 2011
Помог: 0 раз(а)
В описании этого цикла написано:
while (логическое_выражение)...
Когда в аргументе логическое выражение - всё понятно. Например
while($x<10) читается как пока икс меньше 10.. Всё просто.
Но когда пишут while($x) - это воодит меня в ступор. Например на одном сайте описыватеся оператор strtok():
Люди добрые, как мне понимать строчку while($tok)??
EuGen
Отправлено: 09 Марта, 2012 - 19:25:08
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
По поводу while($x) - ничего сложного. Любое выражение, стоящее в скобках while, рассматривается как логическое (булево), и, значит, если оно истинно, цикл продолжается. Просто для Вас более понятно то, что $x<10 есть логическое выражение. http://www.php.su/functions/?strtok
Цитата:
Заметьте, что исходная строка передается только при первом вызове этой функции. Последующим вызовам передаются только разделители, так как эта функция сохраняет исходную строку и запоминает позицию в этой строке между вызовами
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
Dazar
Отправлено: 09 Марта, 2012 - 22:04:19
Частый гость
Покинул форум
Сообщений всего: 139
Дата рег-ции: Янв. 2011
Помог: 0 раз(а)
Всё равно что-то не понимаю.. Как так посмотреть на переменную, чтобы она стала логическим выражением?
OrmaJever
Отправлено: 09 Марта, 2012 - 22:07:33
Активный участник
Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010 Откуда: Чернигов
Помог: 299 раз(а)
0(ноль), '' (пустая строка), array()(пустой масив), null и сам false это ложь, всё остальное true.
Хотя мог что-то и забыть
----- Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
LIME
Отправлено: 09 Марта, 2012 - 22:07:52
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
например цифра 0, пустая строка "" или null в логическом контексте считаются как false
все строки не 0вой длины и цифры не 0 считаются труе (Добавление) преобразование в булев тип
Dazar
Отправлено: 10 Марта, 2012 - 08:18:48
Частый гость
Покинул форум
Сообщений всего: 139
Дата рег-ции: Янв. 2011
Помог: 0 раз(а)
Вроде понял. while($x) будет работать, пока в теле цикла $x не измениться на false, 0 и т.д.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.