Druzya.org
Возьмемся за руки, Друзья...
 
 
Наши Друзья

Александр Градский
Мемориальный сайт Дольфи. 
				  Светлой памяти детей,
				  погибших  1 июня 2001 года, 
				  а также всем жертвам теракта возле 
				 Тель-Авивского Дельфинариума посвящается...

 
liveinternet.ru: показано количество просмотров и посетителей

Библиотека :: Компьютеры и Программирование :: Котеров Д. В. - Самоучитель PHP 4
<<-[Весь Текст]
Страница: из 287
 <<-
 
ых выше примерах оно и не было абсолютно оправданным, но, я 
уверен, рано или поздно вам придется столкнуться с ситуацией, когда без этих 
инструкций не обойтись. 
Нетрадиционное использование 
do-while и break 
Есть один интересный побочный эффект, который дает нам инструкция break, и ко- 
торый довольно удобно использовать для обхода "лишних" операторов (кстати, его 
можно применять и в Си). Необходимость такого обхода возникает довольно часто, 
причем именно при программировании сценариев. Рассмотрим соответствующий 
пример (листинг 9.2): 
Листинг 9.2. Модель сценария для обработки формы 

Глава 9. Конструкции языка 159 
. . . 
$WasError=0; // индикатор ошибки — если не 0, то была ошибка 
// Если нажали кнопку Submit (с именем $doSubmit)... 
if(@$doSubmit) do { 
// Проверка входных данных 
if(неправильное имя пользователя) { $WasError=1; break; } 
. . . и т. д. 
if(неправильные данные) { $WasError=1; break; } 
. . . и т. д. 
// Данные в порядке. Обрабатываем их. 
выполняем действия; 
выводим результат; 
завершаем сценарий; 
} while(0); 
. . . 
Выводим форму, через которую пользователь будет запускать этот сценарий, 
и, возможно, отображаем сообщение об ошибке в случае, если $WasError!=0. 
Здесь представлен наиболее обычный способ для организации сценариев-диалогов. 
Запустив сценарий без параметров, пользователь видит форму с приглашением вве- 
сти свое имя, пароль и некоторые другие данные. При нажатии кнопки запускается 
тот же самый сценарий, который определяет, что была нажата кнопка doSubmit, и 
первым делом проверяет имя и пароль. Если они заданы неверно, то отображается 
опять наша форма (и где-нибудь красным цветом сообщение об ошибке), в против- 
ном случае сценарий завершается и выдает страницу с результатом. 
Мы видим, что указанный алгоритм можно реализовать наиболее удобно, имея ка- 
кой-то способ обрывания блока "проверки-и-завершения" и возврата к выводу формы 

заново. Как раз это и делает конструкция 
if(что_то) do { ... } while(0); 
Очевидно, что тело цикла do-while выполняется в любом случае только один раз 
(так как выражение в while всегда ложно). Тем не менее, такой "вырожденный" 
цикл мы можем использовать для быстрого выхода из него посредством break. 
Многие сразу возразят, что в таких случаях удачнее будет задействовать функции 
и опера- 
тор return. Однако в PHP как раз это довольно неудобно, поскольку для того, 
чтобы из 
функции добраться до глобальной переменной (коей является любой элемент формы), 

нужно проделать несколько дополнительных шагов. Это, конечно, недостаток PHP, и 
о 
нем мы поговорим чуть позже. 

Часть III. Основы языка PHP 160 
Цикл foreach 
Данный тип цикла предназначен специально для перебора всех элементов массива и 
был добавлен только в четвертой версии языка PHP. Выглядит он следующим обра- 
зом: 
foreach(массив as $key=>$value) 
команды; 
Здесь команды циклически выполняются для каждого элемента массива, при этом 
оче- 
редная пара ключ=>значение оказывается в переменных $key и $value. Давайте 
рассмотрим пример (листинг 9.3), где покажем, как мы можем отобразить 
содержимое 
всех глобальных переменных при помощи foreach: 
Листинг 9.3. Вывод всех глобальных переменных 
$v) 
echo "$k => $v
\n"; ?> У цикла foreach имеется и другая форма записи, которую следует применять, когда нас не
 
<<-[Весь Текст]
Страница: из 287
 <<-