Welcome to php club

PHP FAQ from PHPclub.ru: LanguageControl ...

Начало | Каталог | Изменения | НовыеКомментарии | Вам запрещён доступПользователи | Вам запрещён доступРегистрация | Вход:  Пароль:  

Глава 2. Подробней о языке PHP 

Какие возможности управлять логикой (управляющие структуры)?


Любой PHP-скрипт состоит из серии операторов. Это может быть присвоение, вызов функции, цикл, условный оператор или даже оператор, который ничего не делает (пустой оператор). Оператор обычно завершается точкой с запятой. Кроме того, операторы можно группировать с помощью фигурных скобок {}. Группа операторов сама также является оператором.


if, else, elseif

while, do..while


for, foreach, break, continue


switch, case


declare


return


require(), require_once(), include(), include_once()


Конструкция if является одной из ключевых во многих языках, в том числе и в PHP. Она позволяет выполнять фрагменты кода при выполнении условия. PHP предлагает структуру if, которая аналогична такой же структуре языка C: if (expr) statement.


if ($a > $b)
    print "a больше b";


выведет «a больше b», если $a больше $b.


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


if ($a > $b) {
    print "a больше b";
} else {
    print "a не больше, чем b";
}


elseif, как следует из названия, – это комбинация if и else. Подобно else, она расширяет оператор if для выполнения других операторов в том случае, если оригинальное выражение if вычисляется в FALSE. Однако, в отличие от else, elseif будет выполнять альтернативное выражение только тогда, когда условное выражение в elseif будет вычислено в TRUE. Например, следующий код выведет “a is bigger than b”, “a equal to b” или “a is smaller than b”:


if ($a > $b) {
    print "a больше b";
} elseif ($a == $b) {
    print "a равно b";
} else {
    print "a меньше b";
}


Может быть несколько elseif внутри одного оператора if. Первое выражение elseif (если имеется), которое вычисляется в TRUE, будет выполняться. В PHP вы можете также записать 'else if' (двумя словами), и поведение будет идентично 'elseif' (одним словом).

while


Циклы while – это простейшие циклы PHP. Они ведут себя, как их аналоги из C. Цикл будет выполняться, пока значение вычисляется в TRUE. Значение выражения проверяется каждый раз в начале цикла, поэтому, если это значение изменилось при выполнении вложенного оператора, выполнение не остановится до конца данной итерации


$i = 1;
while ($i <= 10) {
    print $i++;
    }
    
$i = 1;
while ($i <= 10):
    print $i;
    $i++;
endwhile;


Внимание! Eсли выражение while вычисляется в FALSE в самом начале цикла, цикл не будет выполнен ни разу.

do..while


Циклы do..while очень похожи на циклы while, но условное выражение проверяется в конце каждой итерации, а не в начале. Главное отличие от регулярных циклов while состоит в том, что первая итерация цикла do..while всегда выполняется (условие проверяется только в конце итерации).


$i = 0;
do {
   print $i;
} while ($i>0);


Вышеприведeнный цикл будет пройден точно один раз, поскольку после первого прохода проверка условного выражения даёт FALSE ($i не больше 0), и выполнение цикла завершается.

for 


Циклы for – это самые сложные циклы PHP. Они ведут себя так же, как их аналоги из C.


// простейший вариант
for ($i = 1; $i <= 10; $i++) {
    print $i;
}
// вариант с выходом цикла на 10 проходе и пропуском 5 прохода
for ($i = 1;;$i++) {
    if ($i > 10) {
        break;
    }
    if ($i == 5) {
        continue;
    }
    print $i;
}


break заканчивает выполнение текущей структуры (цикла) for, foreach, while, do..while или switch.


continue используется в циклических структурах для пропуска оставшейся части текущей итерации цикла и продолжения выполнения с начала следующей итерации (прохода) цикла

switch


Oператор switch напоминает выполнение серии операторов IF над одним выражением. Во многих случаях вам нужно будет сравнить одну переменную (или выражение) с различными значениями и выполнить разные участки кода в зависимости от того, каково значение. Например, отобразить выбранный пункт меню.


switch ($menu_key) {
    case 'about':
        echo 'About';
        include 'about.php';
        break;
    case 'pricelist':
        echo 'Pricelist';
        include 'pricelist.php';
    default:
        echo 'Welcome';
        include 'index_page';
        break;
}


Рекомендуем вам чаще использовать эту конструкцию – она значительно повышает защищенность ваших скриптов. Если $menu_key пустой или не совпадает, то выполнится блок default.

declare


Конструкция declare используется для установки директив выполнения для блока кода.


declare (directive) statement


Раздел directive позволяет устанавливать поведение блока declare. В настоящее время распознаётся только одна директива: ticks. (См. далее о директиве ticks.) Часть statement-блока declare будет выполнена – то, как она выполняется и какие побочные эффекты возникают в процессе выполнения, зависит от директивы, установленной в блоке directive.


return – если вызывается из функции, оператор return() немедленно заканчивает выполнение текущей функции и возвращает свой аргумент как значение вызова функции. return() также заканчивает выполнение оператора eval() или файла скрипта.


Оператор require() включает/include и вычисляет определённый файл. require() и include() идентичны почти во всём, за исключением того, как они обрабатывают неудачное выполнение: include() выдаёт “Warning!”, а require() выдаёт “Fatal Error”.


Оператор require_once() включает/include и вычисляет специфицированный файл в процессе выполнения скрипта. Это поведение напоминает оператор require() с той только разницей, что, если код из файла уже был подключён, он не будет подключён ещё раз.



 
Один комментарий. [Показать комментарии/форму]