Управляющие конструкции PHP. Условия


PHP: Альтернативный синтаксис управляющих конструкций

PHP поддерживает альтернативный синтаксис для некоторых управляющих конструкций, а именно для: if, switch, while, for и foreach . Основная форма альтернативного синтаксиса заключается в замене открывающей фигурной скобки на двоеточие ( : ), завершающая фигурная скобка заменяется на ключевое слово endif, endswitch, endwhile, endfor и endforeach , которое соответствует используемой конструкции.

При использовании в управляющих конструкциях альтернативного синтаксиса, фигурные скобки не ставятся, даже если используется несколько инструкций. После условия ставится двоеточие, после которого указывается одна или более инструкций, в самом конце, для указания завершения общей конструкции используется ключевое слово endif .

Замечание : если для определения нескольких условий if/elseif используется альтернативный синтаксис, в этом случае можно использовать только elseif в одно слово, т.е. вы не должны разделять else if в два слова, так как это вызовет фатальную ошибку в PHP.

Смешивание двух видов синтаксиса в одной конструкции не поддерживается, это правило относится ко всем операторам указанных в этой главе.

Правила альтернативного синтаксиса описанные в этом разделе также действуют и для остальных управляющих структур. Поэтому ниже будут просто приведены примеры.

switch

while

Обратите внимание, для вложенных конструкций, может применяться и синтаксис включающий фигурные скобки, но так делать не рекомендуется, так как это снижает читаемость кода.

Дополнительные сведения

Теперь рассмотрим вопрос о том, когда лучше использовать альтернативный синтаксис, а заодно вы узнаете, как еще можно использовать управляющие конструкции.

Приведем простой пример:

В приведенном примере, блок HTML-кода «A равно 5» вложен внутрь конструкции if написанной с альтернативным синтаксисом. HTML-блок будет показан только в том случае, если переменная $a будет равна 5 .

Как вы уже могли догадаться из примера выше, альтернативный синтаксис можно использовать для вставок в HTML-разметку. Так как в этом случае код php и html будут разделены, это упрощает верстку страницы.

Рассмотрим примеры для других конструкций:

Конечно не обязательно использовать представленный синтаксис, можно пользоваться и стандартной записью, с использованием фигурных скобок, но в этом случае код будет менее читабельным.

Синтаксис оператора foreach и его альтернативная запись будут рассмотрены позднее, а именно во время изучения массивов и объектов.

Подробнее о конструкции if

В этой статье мы более подробно рассмотрим использование в PHP логических операторов, конструкции if и расскажем о различных способах ее записи. Для начала разберем, как работать с конструкцией if , если у вас имеется больше одного условия.

Конструкция if может быть вложенной:

Этот код выведет результат на экран только в том случае, если исполняется каждое из условий в обеих конструкциях. Есть и другой способ записи такого:

Какой способ записи оператора цикла PHP использовать, зависит от ситуации и от ваших личных предпочтений. В предыдущей статье мы рассмотрели правила использования конструкции else . В PHP есть еще одна специальная конструкция – else if .

Она содержит в себе конструкции if и else , и может использоваться следующим образом:

Данная конструкция оператора цикла PHP не реализует ничего нового, кроме другого синтаксиса. Точно также можно использовать конструкцию else , а следом еще одну конструкцию if .

При разработке на PHP в конструкциях типа if или while помимо стандартных блоков кода, заключенных в фигурные скобки, можно использовать альтернативный синтаксис. Он не особо популярен, но рекомендуем с ним ознакомиться:

Если такой вариант вам нравится больше – спокойно используйте его. Нет никакой принципиальной разницы.

Тернарный оператор

Бывают случаи, когда использование полноценной конструкции if является избыточным. Например, нам нужно подставить необходимое слово к выходному значению переменной в зависимости от того, добавил ли пользователь товары в корзину:

Используя тернарный оператор PHP , мы можем сократить эту запись:

Такая запись существенно сокращает количество строк кода. Тернарный оператор PHP – сокращенная версия конструкций if и else , записанная в одну строку. Условие, заданное после двух скобок, это и есть аналог if . После ставится вопросительный знак, за которым прописывается следующее условие: удовлетворяет ли конструкции условие TRUE .

Затем ставится двоеточие, за которым прописывается следующее условие: удовлетворяет ли конструкции условие FALSE . Так как все эти условия пишутся в одной строке с оператором присваивания, мы ставим две скобки, чтобы PHP определил, что строчка содержит условие.

Это всего лишь альтернативный вариант записи, используйте его на свое усмотрение.

Данная публикация представляет собой перевод статьи « More if statements » , подготовленной дружной командой проекта Интернет-технологии.ру

Управляющие конструкции PHP. Условия

Управляющие конструкции php: elseif и for

Сегодня на примере программы обработчика для урока Флажки checkbox и свойства таблицы colspan и rowspan рассмотрим управляющие конструкции php, а именно условные операторы elseif, и оператор цикла for.

Сначала немного теории:

Оператор if позволяет выполнять фрагменты кода в зависимости от условия. Структуру оператора if можно представить следующим образом:

оператор используется для выполнения блока кода, когда выполняется условие (true). В противном случае блок кода игнорируется. Если блок кода содержит несколько команд, то он должен быть заключен в фигурные скобки .

Оператор else расширяет if на случай, когда условие выполняется (true), или для выполнения другого блока кода, когда условие не выполняется (false).
Структура оператора if else следующая:

Еще один способ расширения условного оператора if – использование оператора elseif. elseif – это комбинация else и if. Оператор расширяет оператор if, чтобы выполнялся другой оператор в случае, если исходное выражение if оценивается как FALSE. В отличие от else он будет выполнять альтернативное выражение, только если условное выражение elseif оценивается как TRUE.
Структуру оператора if, расширенного с помощью операторов else и elseif, можно представить следующим образом:

Операторов elseif может быть несколько в одном if блоке. Elseif утверждение будет выполнено, только если предшествующее if условие является False, все предшествующие elseif условия являются False, а данное elseif условие – True.

Оператор цикла for это конструкция, позволяющая выполнять повторяющиеся действия в зависимости от условия.
Структура оператора for:

Первое выражение1 вычисляется один раз в начале цикла. В начале каждой итерации вычисляется выражение2. Если оно является True, то цикл продолжается и выполняются все команды блока выполнения. Если выражение2 вычисляется как False, то исполнение цикла останавливается. В конце каждой итерации (т.е. после выполнения всех команд блока выполнения) вычисляется выражение3.

Каждое из выражений 1, 2, 3 может быть пустым. Если выражение2 является пустым, то это значит, что цикл должен выполняться неопределенное время (в этом случае PHP считает это выражение всегда истинным), а цикл можно останновить, используя оператор break.
В третье выражение конструкции for можно записывать через запятую сразу несколько простейших команд.

Можно опустить все три выражения. Тогда просто не будет задано начальное значение счетчика и оно не будет изменяться каждый раз в конце цикла. Все эти действия можно записать в виде отдельных команд либо в блоке выполнения, либо перед циклом.

Взгляните на код программы обработчика. Она состоит из уже знакомых вам конструкций 2×1

2×2

2×3

HERE;

Затем с помощью условного оператора if else проверяю для какого свойства colspan или rowspan необходимо проводить проверку.
Если выбрано свойство colspan, тогда с помощью нескольких условных операторов elseif и составного условия я проверяю какие ячейки таблицы были выбраны для объединения, и в зависимости от выбора вывожу с помощью конструкции 1×1

1×2
$tr2
HERE;
>
else if ($val[1] != «» && $val[2] != «» && $val[3] == «») <
print 1×1

1×2
$tr2
HERE;
>
else if ($val[1] != «» && $val[2] != «» && $val[3] != «») <
print 1×1
$tr2
HERE;
>
else <
print 1×1

1×2

1×3
$tr2
HERE;
>
>//Заканчиваем исследование свойства colspan

Если же было выбрано свойство rowspan, то формирую массив ячеек таблицы $td[ ], состоящий из шести элементов (по количеству ячеек в таблице). Затем с помощью простого оператора if проверяю какие столбцы были выбраны для исследования и переопределяю необходимые элементы массива ячеек таблицы $td[ ]. И наконец с помощью операторов echo и оператора цикла for, вывожу поочередно строки таблицы.в которой содержится HTML код первой строки таблицы и переменную $tr2, в которой содержится вторая строка.

Условия в PHP

Всем привет! Вот и очередной урок по PHP подоспел. Сегодняшняя тема – одна из самых любимых у тех, кто начинает программировать. Ещё бы, ведь условия в PHP – это то, что позволяет нам составлять различные алгоритмы. Именно в зависимости от условий программа будет вести себя так или иначе. И именно благодаря им мы можем получать разный результат при разных входных данных. В PHP имеются несколько конструкций, с помощью которых можно реализовать условия. Все они используются, и имеют свои преимущества в разных ситуациях, или, если хотите – условиях. Кругом одни условия, не так ли? Так. Никто ведь не будет спорить, что в реальной жизни в зависимости от обстоятельств мы поступаем по-разному. В программировании это не менее важно и сейчас мы этому научимся.

Как вы должны помнить из прошлого урока, в PHP, в зависимости от оператора, операнды приводятся к определённому типу. Для операторов условий в PHP действуют те же правила, и здесь операнд всегда приводится к булевому значению. В случае, если это значение true, то считаем, что условие выполнено, а в случае, если false – то условие не выполнено. В зависимости от того, выполнено ли условие, мы можем делать или не делать какие-либо действия. И тут я предлагаю рассмотреть первый условный оператор – if.

Условный оператор if

Это самый простой, и самый часто используемый оператор. В общем случае конструкция выглядит следующим образом:

Топ-пост этого месяца:  FAQ - Часть 7

А в реальной жизни использование оператора if выглядит следующим образом:


Здесь мы явно передали оператору значение true. Разумеется, это абсолютно бессмысленно. Давайте с помощью условия будем определять числа больше 10. Это довольно просто:

И после запуска мы увидим результат:

Конструкция if-else

А можно ли сделать так, чтобы, когда условие не выполнилось, выполнился другой код? Конечно можно! Для этого вместе с оператором if используют оператор else (по-русски — иначе). Он пишется после фигурных скобок, в которые заключается код, выполняющийся при выполненном условии. И выглядит конструкция следующим образом:

Здесь опять же на экран будет выведено сообщение:

Однако если мы изменим входные данные, и переменной $x в самом начале присвоим значение 8, то выведется сообщение:

Попробуйте сделать это прямо сейчас.

Конструкция if-elseif-else: несколько условий

В случае, если вам нужно проверить несколько условий, после оператора if добавляется ещё и оператор elseif. Он проверит условие, только если не выполнится первое условие. Например:

В данном случае, на экран будет выведено:

И да, после этого оператора можно добавить else. Код внутри него будет выполнен, если не выполнилось ни одно из условий:

Результат этого кода, я полагаю, объяснять не нужно. Да, кстати, возможен целый список из elseif-ов. Например, такой:

Приведение к boolean

Помните, в уроке про типы данных в PHP мы с вами научились явно приводить значения к какому-либо типу. Например:

Результатом будет true.
Работающее так же, только неявное преобразование, всегда происходит в условии. Например, следующее условие:

Выполнится успешно, так как число 3 будет преобразовано к true. К false будут приводиться следующие значения:

Таким образом, любое ненулевое число и ненулевая строка будут преобразованы в true и условие выполнится. Исключение – строка, состоящая из одного нуля:

Она также будет преобразована к false.

Я затронул эту тему с приведением к boolean в домашнем задании к этому уроку. Обязательно его выполните. А сейчас давайте перейдём к следующему условному оператору.

Оператор switch

Помимо конструкции if-else есть ещё один оператор условия. Это – switch. Это очень интересный оператор, требующий запоминания нескольких правил. Давайте для начала посмотрим, как он выглядит на следующем примере:

Сначала может показаться, что этот оператор довольно сложный. Однако, если разобраться, то всё становится понятно. В операнде switch указывается некоторое выражение. В нашем случае, это переменная $x, а точнее её значение — 1.

В фигурных скобках мы перечисляем операторы case, после которых указываем значение, с которым сравнивается значение операнда switch. Сравнение происходит нестрогое, то есть как будто используем оператор ==. И если условие выполнилось, то выполняется код, указанный после двоеточия. Если же ни одно из условий не выполнилось, то выполняется код из секции default, которой в общем-то может и не быть, и тогда ничего выполняться не будет. Обратите внимание, внутри каждой секции case, в конце мы прописали оператор break. Это делается для того, чтобы после выполнения кода в случае выполнения условия не продолжилась проверка условий. То есть, если бы не было break в конце секции case 1, то после того, как вывелся бы текст

продолжило бы выполняться условие сравнения с 2, а затем бы выполнился и код в секции default. Не забывайте писать break!

Сравнение switch с if

Вообще, этот код можно было бы записать и с помощью конструкции if-elseif-else:

Но в виде конструкции switch-case код в конкретно этом случае выглядит проще. И вот почему:

  1. мы сразу видим, что конкретно мы сравниваем (переменную $x) и понимаем, что сравниваем в каждом условии именно это значение, а не какое-либо ещё;
  2. глазу удобнее воспринимать то, с чем сравниваем – секции case 1, case 2 визуально воспринимаются легче, сравниваемое значение заметнее.

И снова про switch

И я ещё не всё сказал про switch — можно писать несколько case-ов подряд, тогда код выполнится при условии, что выполнен хотя бы один из них. Например:

Согласитесь, это может быть удобно.

Хорошо, давайте пройдёмся по особенностям оператора switch, о которых нужно помнить всегда.

  1. break прерывает набор условий, не забывайте указывать его;
  2. секция default будет выполнена, если не выполнилось ни одно из условий. Она может и вовсе отсутствовать;
  3. несколько case-ов могуть быть записаны подряд, тогда код в секции выполнится при выполнении хотя бы одного из условий.

Немного практики

Ну что, запомнили операторы условий? Давайте закрепим на практике более реальными примерами.

Чётное или нечётное

Вот один из примеров – нужно определить, чётное ли число или нет. Для этого нам нужно проверить, что остаток от деления на 2 будет равен . Подробнее об операторах читайте тут. Давайте сделаем это:

Попробуйте самостоятельно изменить значение переменной $x. Круто, да? Оно работает!

Модуль

Давайте теперь научимся вычислять модуль числа. Если число больше или равно нулю, то нужно вывести само это число, если меньше – заменить знак с минуса на плюс.

Как мы видим, всё успешно отработало.

Тернарный оператор

Помимо этого, в PHP есть ещё один оператор, который представляет собой сокращённую форму конструкции if-else. Это тернарный оператор. При этом он возвращает разные результаты, в зависимости от того, выполнено ли условие или нет. В общем виде его использование выглядит следующим образом:

Или на примере того же нахождения модуля:

Круто, да? Тернарный оператор – очень элегантно вписывается при решении таких вот простеньких задачек.

И ещё немного практики

Условия можно помещать внутрь друг друга и вообще, чего с ними только можно не делать. Например:

Друзья, надеюсь вам понравился урок. Если это так – буду рад, если вы поделитесь им в социальных сетях или расскажете друзьям. Это лучшая поддержка проекта. Спасибо тем, кто это делает. Если у вас возникли какие-то вопросы или замечания – напишите об этом в комментариях. А сейчас – все быстренько делаем домашнее задание, там ещё больше интересных примеров с условиями. Всем пока!

Управляющие конструкции PHP. Условия

Здравствуйте, дорогие читатели! Все вопросы и замечания присылайте на phpphp @ mail . ru .

В прошлом выпуске мы познакомились с историей PHP , определились со структурой простейшей программы и с основными операторами. Сегодня мы познакомимся с типами переменных в PHP и с управляющими конструкциями.

Для начала напишем программу, выполняющую некоторые полезные действия. Н-р, определяющую тип нашего браузера.


if ( strstr ( $_SERVER [ «HTTP_USER_AGENT» ], «MSIE» )) <
echo «Вы используете Internet Explorer
» ;
>
?>

Рассмотрим подробнее действия, выполняемые этой простой программой.

Оператор if проверяет условие , заключенное в круглые скобки. Если это условие выполняется, то далее выполняются операторы, заключенные в фигурные скобки. Функция strstr() — встроенная в PHP функция, которая ищет одну строку в другой. В данном случае мы ищем строку «MSIE» в $_SERVER[«HTTP_USER_AGENT»] (HTTP_USER_AGENT — это переменная, в которой хранится информация о нашем браузере) . Если строка не найдена, эта функция возвращает FALSE , если найдена — TRUE . Если она вернет TRUE , то условие в if окажется истинным, и код в командных скобках (< >) выполнится. В противном случае данный код не выполняется.

Но, учитывая то, что в настоящее время распространено уже достаточно большое количество браузеров (не берусь назвать точное их количество J ), проверкой одного условия нам не обойтись. Проверить на 2й браузер, н-р на Opera можно так:

if ( strstr ( $_SERVER [ «HTTP_USER_AGENT» ], «MSIE» )) <
echo » Вы используете Internet Explorer
» ;
>

if ( strstr ( $_SERVER [ «HTTP_USER_AGENT» ], «Opera» )) <
echo » Вы используете браузер Opera
» ;
>
?>

Т.е. мы «тупо» скопировали вышеприведенный пример, заменив во 2м операторе if проверку на вхождение в название браузера слова Opera . Теперь наша программа будет работать для 2х браузеров. Давайте ее перепишем несколько в другом виде:

php
if ( strstr ( $_ SERVER [ » HTTP _ USER _ AGENT » ], » MSIE » )) <
echo «Вы используете Internet Explorer br />» ;
> elseif ( strstr ( $_ SERVER [ » HTTP _ USER _ AGENT » ], » Opera » )) <
echo «Вы используете браузер Opera br />» ;
> else echo «Вы используете неизвестный браузер» br />» ;
?>

В данном случае у нас используется конструкция if — elseif — else .

Сначала происходит проверка на истинность условия (выражения), находящегося после if , если оно ложно, то проверяется условие после elseif , если и оно ложно, то выполняется оператор, находящийся после else (уже без проверки условий, просто «по факту», т.к. предыдущие проверки оказались ложными).

Проверить работу данной программы можно здесь.

Для более полного понимания работы оператора if нам нужно познакомиться с булевым типом переменных. Т.е. оператор if имеет следующую структуру:

if (выражение) инструкция

Выражение вычисляется в булево значение. Если выражение принимает значение TRUE , PHP выполнит инструкцию , а если оно принимает значение FALSE — проигнорирует.

Булев (boolean )

Это простейший тип. Он выражает истинность значения — это может быть либо TRUE (Истина) , либо FALSE (Ложь) .

Чтобы определить булев тип, используйте ключевое слово TRUE или FALSE. Оба регистро -независимы.

$foo = True ; // присвоить $foo значение TRUE

( Двойной слэш // — обозначает, что текст, находящийся справа от этих символов не является программой. Обычно используется для комментирования — пояснения смысла выполняемых действий, переменных и т.д.)

При преобразовании в логический тип, следующие значения рассматриваются как FALSE :

  • Сам булев FALSE
  • целое 0 (ноль)
  • число с плавающей точкой 0.0 (ноль)
  • пустая строка и строка «0»
  • пустой массив
  • объект без атрибутов (только в PHP 4)
  • специальный тип NULL (включая неустановленные переменные)

Все остальные значения рассматриваются как TRUE

Булев относится к скалярным типам. Кроме него скалярными типами являются:

integer Целые числа , н-р $a = 1234 ; // десятичное число

Топ-пост этого месяца:  Модуль page title в Drupal

float Числа с плавающей точкой , н-р $a = 1.234 ;

string Строки н-р $a = ‘это простая строка’ ;

Подробнее с перечисленными типами переменных и с преобразованием их мы познакомимся на примерах в следующем выпуске.

Управляющие конструкции PHP. Условия

Это самые сложные циклы в PHP. Они напоминают соответствующие циклы C.

for (выражение1; выражение2; выражение3)

for (выражение1; выражение2; выражение3): блок_выполнения endfor;

Здесь, как мы видим, условие состоит сразу из трех выражений. Первое выражение выражение1 вычисляется безусловно один раз в начале цикла. В начале каждой итерации вычисляется выражение2. Если оно является True, то цикл продолжается и выполняются все команды блока_выполнения. Если выражение2 вычисляется как False, то исполнение цикла останавливается. В конце каждой итерации (т.е. после выполнения всех команд блока_выполнения) вычисляется выражение3.

Каждое из выражений 1, 2, 3 может быть пустым. Если выражение2 является пустым, то это значит, что цикл должен выполняться неопределенное время (в этом случае PHP считает это выражение всегда истинным). Это не так бесполезно, как кажется, ведь цикл можно останавливать, используя оператор break.

Например, все четные цифры можно вывести с использованием цикла for таким образом:

Если опустить второе выражение (условие $i =10) break;
// если $i больше или равно 10,
// то прекращаем работу цикла
if ($i % 2 == 0) print $i;
// если число четное,
// то печатаем его
>
?>

Можно опустить все три выражения. В этом случае просто не будет задано начальное значение счетчика $i и оно не будет изменяться каждый раз в конце цикла. Все эти действия можно записать в виде отдельных команд либо в блоке_выполнения, либо перед циклом:

=10) break;
// если $i больше или равно 10,
// то прекращаем работу цикла
if ($i % 2 == 0) print $i;
// если число четное,
// то печатаем его
$i++; // увеличиваем счетчик на единицу
>
?>

В третье выражение конструкции for можно записывать через запятую сразу несколько простейших команд. Например, если мы хотим просто вывести все цифры, то программу можно записать совсем просто:

Еще одна полезная конструкция. Она появилась только в PHP4 и предназначена исключительно для работы с массивами.

foreach ($array as $value)

foreach ($array as $key => $value)

В первом случае формируется цикл по всем элементам массива, заданного переменной $array. На каждом шаге цикла значение текущего элемента массива записывается в переменную $value, и внутренний счетчик массива передвигается на единицу (так что на следующем шаге будет виден следующий элемент массива). Внутри блока_выполнения значение текущего элемента массива может быть получено с помощью переменной $value. Выполнение блока_выполнения происходит столько раз, сколько элементов в массиве $array.

Вторая форма записи в дополнение к перечисленному выше на каждом шаге цикла записывает ключ текущего элемента массива в переменную $key, которую тоже можно использовать в блоке_выполнения.

Когда foreach начинает исполнение, внутренний указатель массива автоматически устанавливается на первый элемент.

$val) <
// кроме приветствия,
// выведем номера в списке, т.е. ключи
echo «Привет, $val !
Ты в списке под номером $k
«;
>
?>

Операторы передачи управления

Иногда в случае особых обстоятельств требуется немедленно завершить работу цикла и передать управление первой инструкции программы, расположенной за последней инструкцией цикла. Для этого используют операторы break и continue.

Оператор break заканчивает выполнение текущего цикла, будь то for, foreach, while, do..while или switch. break может использоваться с числовым аргументом, который говорит, работу скольких управляющих структур, содержащих его, нужно завершить.

Результатом работы этого скрипта будет примерно следующее:

1:7 Цикл работает
2:2 Цикл работает
3:5
Число итераций цикла 3

Если после оператора break указать число, то прервется именно такое количество содержащих этот оператор циклов. В приведенном выше примере это неактуально, поскольку вложенных циклов нет. Немного изменим наш скрипт:

Выход из switch (n=$n) «;
break 1;
// прекращаем работу switch
// (первого содержащего break цикла)
case 10:
echo »
Выход из switch и
while (n=$n) «;
break 2;
// прекращаем работу switch и while
// (двух содержащих break циклов)
default:
echo «switch работает (n=$n), «;
>
echo » while работает – шаг $i
«;
$i++;
>
echo «
Число итераций цикла $i «;
?>

Иногда нужно не полностью прекратить работу цикла, а только начать его новую итерацию. Оператор continue позволяет пропустить дальнейшие инструкции из блока_выполнения любого цикла и продолжить выполнение с нового круга. continue можно использовать с числовым аргументом, который указывает, сколько содержащих его управляющих конструкций должны завершить работу.


Заменим в примере предыдущего параграфа оператор break на continue. Кроме того, ограничим число шагов цикла четырьмя.

Результатом работы этого скрипта будет

1:10 Цикл работает
2:5 Новая итерация 2:1 Цикл работает
3:1 Цикл работает
Число итераций цикла 4

Заметим, что после выполнения оператора continue работа цикла не заканчивается. В примере счетчик цикла не меняется в случае получения числа 5, поскольку он находится после оператора continue. Фактически с помощью continue мы пытаемся избежать ситуации, когда будет сгенерировано число 5. Поэтому можно было просто написать, заменив оператор continue на проверку истинности выражения:

В PHP существует одна особенность использования оператора continue – в конструкциях switch он работает так же, как и break. Если switch находится внутри цикла и нужно начать новую итерацию цикла, следует использовать continue 2.

Операторы включения

Оператор include позволяет включать код, содержащийся в указанном файле, и выполнять его столько раз, сколько программа встречает этот оператор. Включение может производиться любым из перечисленных способов:

include ‘имя_файла’;
include $file_name;
include («имя_файла»);

Пример 3.9. Пусть в файле params.inc у нас хранится набор каких-то параметров и функций. Каждый раз, когда нам нужно будет использовать эти параметры (функции), мы будем вставлять в текст нашей основной программы команду include ‘params.inc’.

Заметим, что использование оператора include эквивалентно простой вставке содержательной части файла params.inc в код программы include.php. Может быть, тогда можно было в params.inc записать простой текст без всяких тегов, указывающих на то, что это php-код? Нельзя! Дело в том, что в момент вставки файла происходит переключение из режима обработки PHP в режим HTML. Поэтому код внутри включаемого файла, который нужно обработать как PHP-скрипт, должен быть заключен в соответствующие теги.

Поиск файла для вставки происходит по следующим правилам.

— Сначала ведется поиск файла в include_path относительно текущей рабочей директории.

— Если файл не найден, то поиск производится в include_path относительно директории текущего скрипта.

— Параметр include_path, определяемый в файле настроек PHP, задает имена директорий, в которых нужно искать включаемые файлы.

Например, ваш include_path это . (то есть текущая директория), текущая рабочая директория это /www/. В основной файл include.php вы включаете файл my_dir/a.php, который в свою очередь включает b.php. Тогда парсер первым делом ищет файл b.php в директории /www/, и если такового нет, то в директории /www/my_dir/.

Если файл включен с помощью include, то содержащийся в нем код наследует область видимости переменных строки, где появился include. Любые переменные вызванного файла будут доступны в вызывающем файле с этой строки и далее. Соответственно, если include появляется внутри функции вызывающего файла, то код, содержащийся в вызываемом файле, будет вести себя так, как будто он был определен внутри функции. Таким образом, он унаследует область видимости этой функции. Хотя мы и не знакомились еще с понятием функции, все же приводим здесь эти сведения в расчете на интуитивное его понимание.

Пример 3.10. Пусть файл для вставки params.inc останется таким же, а include.php будет следующим:

Страницу
создал $user»;
echo «$str»;
>
Footer();
// вызываем функцию Footer(). Получим:
//Сегодня: 08.07.05
//Страницу создал Вася
echo «$user, $today»;
// выведет запятую, так как
// эти переменные видны только
// внутри функции
?>

Кроме локальных файлов, с помощью include можно включать и внешние файлы, указывая их url-адреса. Данная возможность контролируется директивой url_fopen_wrappers в файле настроек PHP и по умолчанию, как правило, включена. Но в версиях PHP для Windows до PHP 4.3.0 эта возможность не поддерживается совсем, вне зависимости от url_fopen_wrappers.

include() – это специальная языковая конструкция, поэтому при использовании внутри условных блоков ее нужно заключать в фигурные скобки.

При использовании include возможны два вида ошибок – ошибка вставки (например, нельзя найти указанный файл, неверно написана сама команда вставки и т.п.) или ошибка исполнения (если ошибка содержится во вставляемом файле). В любом случае при ошибке в команде include исполнение скрипта не завершается.

Этот оператор действует примерно так же, как и #include в C++. Все, что мы говорили о include, лишь за некоторыми исключениями, справедливо и для require. Require также позволяет включать в программу и исполнять какой-либо файл. Основное отличие require и include заключается в том, как они реагируют на возникновение ошибки. Как уже говорилось, include выдает предупреждение, и работа скрипта продолжается. Ошибка в require вызывает фатальную ошибку работы скрипта и прекращает его выполнение.

Условные операторы на require() не влияют. Хотя, если строка, в которой появляется этот оператор, не исполняется, то ни одна строка кода из вставляемого файла тоже не исполняется. Циклы также не влияют на require(). Хотя код, содержащийся во вставляемом файле, является объектом цикла, но вставка сама по себе происходит только однажды.

В реализациях PHP до версии 4.0.2 использование require() означало, что интерпретатор обязательно попытается прочесть вставляемый файл.

require, как и include, при использовании внутри условных блоков нужно заключать в фигурные скобки.

Решение задачи

И наконец, вернемся к задаче, сформулированной в начале лекции. Мы хотим создать программу, которую можно было бы использовать для отправки писем (или просто для их генерации) с приглашениями на различные мероприятия множеству пользователей. В предыдущей лекции уже рассматривался подобный случай. Сейчас мы вынесем всю информацию о людях и событиях в отдельный файл data.php и напишем программу, не зависящую (ну, может, совсем чуть-чуть зависящую) от этой информации и ее структуры. В этом случае для того, чтобы, например, расширить список адресатов, не нужно будет изменять скрипт, генерирующий приглашения. Кроме того, можно будет использовать информацию о людях и событиях в других скриптах. В самом скрипте, генерирующем приглашения letters.php, мы использовали условные операторы, циклы, require и другие изученные ранее конструкции.

Топ-пост этого месяца:  Создание карты для сайта на Joomla с помощью компонента Xmap

«день открытых дверей»,
«o» => «открытие выставки»,
«p» => «бал выпускников»);
// имеющаяся информация о людях
// (имя и электронный адрес)
$people = array(
«ivan» => array(
«name» => «Иван Иванович»,
«email»=>»[email protected]»),
«pit» => array(
«name» => «Петр Петрович»,
«email» => «[email protected]»),
«semen» => array(
«name» => «Семен Семенович»));
// кто куда приглашается
$who_where[«ivan»] = «o» ;
// Иван – на выставку
$who_where[«pit»] = «p»;
// Петр – на бал
?>
$man_info) <
// для каждого человека делаем следующее:
$event_key = $who_where[$key];
// получаем событие,
// на которое он приглашается
if ($event_key<>«») <
foreach($man_info as $key1 => $info) <
// получаем имя и email
// конкретного человека
if ($key1==»name»)
$str = «Уважаемый (ая), $info»;
if ($key1==»email») $email = $info;
>
// составляем приглашение
$str .= «
Приглашаем Вас на «.
$events[$event_key];
switch ($event_key) <
// в зависимости от события
// добавляем какую-нибудь строчку
case «f»:
$str .= «
Подтвердите Ваше
участие по телефону!»;
break;
case «o»:
$str .= «
Приходите за 15
минут до открытия!»;
break;
case «p»:
$str .= «
Не забудьте подарок :-)»;
break;
>
$str .= «
» . SIGN . » «;
// добавляем подпись
echo $str; // вводим приглашение на экран
/* если у вас настроена отправка почты с
помощью PHP, то письмо можно отправить
командой mail($email,»Letter»,$str); */
>
>
?>

Заключение

Итак, мы завершили изучение управляющих конструкций языка PHP. Мы старались привести самое основное и не углубляться в различные нюансы тех или иных конструкций. Подробную информацию можно найти в руководстве по PHP.

PHP :: Инструкциии

Что такое инструкция?

Прежде, чем приступить к описанию основных управляющих конструкций языка PHP , давайте еще раз сформулируем само понятие инструкции.

– это команда на языке PHP , которая выполняется для того, чтобы что-то происходило. По сути, любой php -скрипт представляет собой не что иное, как некоторую последовательность инструкций.

К инструкции можно отнести присваивание, сравнение, вызов функции, различные циклы и условные операторы или даже пустой оператор, т.е. пустую инструкцию, которая ничего не делает. Как уже было показано выше, в PHP каждая инструкция отделяется от других точкой с запятой ‘;’ , которая обычно ставится в той же строке в конце каждой инструкции. Если инструкция является последней в блоке php -кода, то после нее точку с запятой разрешается не ставить, т.к. закрывающий тег сделает это автоматически. Кроме того, инструкции могут быть объединены посредством фигурных скобок в целые блоки инструкций, каждый из которых сам по себе является отдельной инструкцией.

Управляющие конструкции PHP

По умолчанию интерпретатор PHP выполняет инструкции последовательно одна за другой в порядке их следования в коде. Однако имеется и ряд специальных инструкций, называемых , которые изменяют выполнение хода программы по умолчанию. К ним относятся:

    , такие как if или switch , которые указывают интерпретатору PHP на выполнение или пропуск других инструкций в зависимости от значения условного выражения; , такие как for , foreach , while или do/while , которые указывают интерпретатору на многократное выполнение других инструкций; , такие как break , continue , return или goto , которые указывают интерпретатору на выполнение перехода в другую часть программы.

В данном параграфе мы как раз и будем заниматься рассмотрением различных управляющих конструкций, использующихся в языке PHP .

Условный оператор if в PHP

Как и в других языках программирования, в PHP существуют операторы выбора. Всего их три вида:

  • условный оператор if. else ;
  • переключатель switch ;
  • условная операция ( ? );

Стоит отметить, что в PHP отсутствует безусловный переход по метке goto , но несмотря на это, ключевое слово под goto зарезервировано.

В этом уроке мы рассмотрим условный оператор if. else и условные операции, а следующий урок будет посвящен переключателю switch.

Синтаксис if. else такой же, как и в языке С:

  • else — не обязательная часть, но чаще всего её применяют, т.к. этого требует логика.
  • Как было отмечено в комментариях к коду, фигурные скобочки <> не обязательны, если у нас только один оператор. Поскольку условие может быть либо истинным (1), либо ложным (0), то будет выполнены либо operator1, operator2 и т.д., либо operator3, operator4 и т.д.

Приведем конкретный пример на PHP:

Приведем пример, в котором конструкция else опущена, а условие состоит из двух условий:

Вложенные условия if

Как и в языке С, в PHP допускается использование вложенных в друг друга условий:

Вложений if в if можно написать сколь угодно много, но такие конструкции очень сложны, поэтому при отладке программы разобраться в них будет довольно трудно. Приведем пример с вложенными операторами if :


Вложенные условия с помощью if. elseif. else

В PHP есть возможность использовать вложенные условные операторы с помощью схемы: if. elseif. else . Это гораздо удобней, чем делать первоначально множество условий, а потом к ним множество else . Синтаксис конструкции if. elseif. else следующий:

В такой конструкции else может быть написан только один раз, а вот elseif сколько угодно. Также считается, что выше описанная конструкция уступает переключателю switch .

Использование оператора endif

Практически в любом движке созданном на PHP используется оператор endif . Конструкция данного оператора приведена ниже:

Стоит обратить внимание на удобство этой конструкции, чем если бы мы выводили весь контент через echo . Не забывайте после условия ставить двоеточие!

Использование условных операций (?)

Применение условных операций не является распространенным подходом не только в языке PHP, но и в других подобных языках, однако о них не стоит забывать. Синтаксис условной операции следующий:

Сначала идет какое-то условие. Если оно истинно, то выполняется оператор_1, иначе оператор_2. Я думаю, что конструкция не является очень понятной, поэтому стоит привести пару разъясняющих примеров на PHP. Например, с помощью условной операции можно легко реализовать модуль числа:

Условные операции бывает выгодно использовать в каких-то коротких выражениях, где нужно изменить значение только одной переменной в зависимости от какого условия.

Управляющие конструкции

Вы можете использовать операторы цикла, такие как for и while. В результате выполнения оператора

Сформулированное выше правило «Пробуй!» вполне применимо и в части управляющих конструкций. Вы можете использовать конструкции с switch, do. while и даже .

Одна из наиболее удобных и приятных особенностей PHP — это его способность автоматически передавать значения переменных из форм в переменные PHP. Это очень облегчает обработку форм.

Например, Вы обрабатываете форму, которая имеет поле ввода следующего вида:

и в то время, когда выводится страница с этим PHP-кодом, переменная $name имеет значение Glen Morris.

Тогда Вы можете вывести это значение на экран:

или вставить проверку в условном операторе:

if ($name == «Glen Morris»)

Это позволяет организовать обработку форм с помощью PHP.

Рассмотрим небольшой пример, в котором попросим посетителя ответить на несколько вопросов (указать имя, электронный адрес и еще кое-что) и сформируем выводимую страницу в зависимости от его ответов.

Вначале разделим нашу страницу на две части. Но не будем создавать две отдельные страницы (одна для формы, другая для CGI-скрипта, который эту форму обрабатывает), а создадим одну PHP-страницу, вид которой изменяется в зависимости от результатов анализа данных, введенных посетителем в имеющуюся на этой странице форму.

Dmko.ru

Основы php, управляющие структуры

Шпаргалка по php, описание управляющих конструкций

if- оператор выбора, если выражение истинно (TRUE), то конструкция выполняется, если нет (FALSE), то конструкция пропускается:

Также существует альтернативный синтаксис, когда вместо фигурных скобок, допускается использовать двоеточие (:):

If else

if else- оператор выбора, но в отличии от if, при значении FALSE в операторе if, выполняется выражение оператора else:

elseif

elseif- конструкция расширяющая оператор if, добавляя альтернативное условие, которое выполняется, если if имеет значение FALSE, а elseif значение TRUE, оператор else выполняется при условии, что if и elseif имеют значение FALSE

while

while- простейший цикл, который выполняется до тех пор, пока значение в самом while равняется TRUE

do-while

do-while- отличие от while в том, что первая итерация гарантированно выполнится, проверка на истинность выражения проверяется в конце цикла.

Для прерывания цикла можно использовать break:

for- еще один цикл, имеет структуру:

  1. expr1— вычисляется один раз в начале цикла
  2. expr2— проверяется в начале каждой итерации, если значение TRUE, то цикл продолжается
  3. expr3— выражение, которое выполняется в конце каждой итерации

foreach

foreach- конструкция, для перебора массивов и объектов, синтаксис:

где statement— перебираемый массив или объект, $value— значение, которое было присвоено при выполнение цикла,а Key— это ключ элемента массива. Во время выполнения цикла, внутренний указатель массива увеличивается на единицу и при следующей итерации работа будет проходить со следующим элементом. Пример:

Для вывода ключей массива:

по завершению цикла нужно разорвать ссылку на последний элемент, используя unset()

break

break- конструкция break используется для упрощения логики в сложных циклах, при выполнении условия происходит выход из цикла:

continue

continue- конструкцияcontinue также как и конструкция break используется для упрощения логики в сложных циклах, но при выполнении условия происходит завершение текущей итерации и переход к следующей:

switch

switch- оператор, также как и оператор if, используется для сравнения переменных с множеством значений, при значении TRUE- участок кода будет выполняться, при значении FALSE- код будет пропущен.

Конструкция записанная с помощью оператора if:

Равносильна записи сделанной с помощью оператора switch:

include, require, include_once, require_once

include, require, include_once, require_once- выражения, которые используются для подключения файлов, include отличается от require тем, что при возникновении ошибки include выдает ошибку, а require выдает ошибку и прекращает выполнение скрипта. include_once и require_once отличаются от include и require тем, что при подключении происходит проверка, подключался файл ранее или нет, если файл уже подключался, то ничего не произойдет, если файл не подключался, то произойдет подключение файла.

Добавить комментарий