Главная > Программирование > РНР: настольная книга программиста
<< Предыдущий параграф
Следующий параграф >>
<< Предыдущий параграф Следующий параграф >>
Макеты страниц

13.7. Конструкция if в PHP

Оператор if проверяет выражение. Если значение выражения ненулевое, оно подчиняется значению true, в этом случае выполняется следующий за ним оператор; если же оно равно нулю, т. е. false, то следующий оператор не выполняется. Например:

if ($s) $s++;

Скобки вокруг выражения $s являются обязательными. Выражение в скобках может быть совершенно произвольным, но с одним условием: оно должно возвращать скалярную величину, которую можно сравнивать с нулем.


ВНИМАНИЕ

Суть определения условия состоит в сравнении двух величин, поэтому в описании условий должен стоять простой символ равенства, соответствующий обозначению. Не путайте операцию присвоения значения (=) с операцией сравнения (==).


Возникает вопрос: когда же величина может быть равна нулю, т. е. в каком случае она считается строго равной нулю:tool (false), integer(0), floating point numbers (0.0), double(0.0).

Значения float и double бывает довольно сложно проверить на равенство нулю: могут сказываться ошибки округления в предшествующих вычислениях. Обычно величины этих типов не рекомендуется использовать в проверках на равенство. Тем не менее случается так, что надо подвергнуть проверке именно величины типа floating point или double. Допустим, что значение типа float (в данном случае — х)

необходимо проверить на равенство (или приблизительное равенство) некой величине n. Также допустим, что требуемая точность сравнения лежит в пределах 0.00000001. Необходимо установить, находится ли проверяемая величина в пределах заданной точности от n:

$pog = 0.00000001;

if ( ($х > $n - $pog) && ($х < $n +$pog) )

echo "х достаточно точно равно " . $n;

Часто проверяемое в операторе if выражение является логическим выражением или сравнением, например, в рассмотренном случае присутствует их комбинация.

В общем случае структура оператора if выглядит следующим образом:

if ( условие ) {

    Оператор_1;

    Оператор 2;

    ...

    Оператор_последний;

}

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

if ( ($х > 5) && !$d ) {

    $z = 5*$s;

    $r += 45;

}

Часто по условию требуется исполнить более одного не надо

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

if < ($х > 5) && !$d)

$z = 5*$s;

$r += 45;

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

$r +=45;

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

<?

$а = 3;

if ($a>5)

$b = $а + 2;

$b = $а + 1;

echo $b;

?>

В ходе выполнения этого примера переменная $b получит значение 4 и будет выведена. В свою очередь строка

$b=$а+2;

будет пропущена в ходе выполнения программы, так как значение выражения в операторе if будет false (ложно). Если бы переменная $а имела значение больше 5, конструкция if позволила бы выполнить в первую очередь выражение

$b = $а + 2;

а затем

$b = $а + 1;


СОВЕТ

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


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

<?

$а = 5;

$b = 2;

$c = 1;

if($a>3) {

    if ($b == 2) {

        if < ($c == 1) && ($b == 2)) {

            $c = $b+5;

            $s = 0;

        }

        $c++;

    }

    $c = $c*2;

)

echo $c;

?>

Результатом выполнения данной программы будет изменение значения переменной $сс $с = 1 на $с = 16;.

Обратите внимание, что если вы поставите точку с запятой непосредственно после самого оператора

if ($a >= 3) ;

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

<< Предыдущий параграф Следующий параграф >>
Оглавление