13.7. Конструкция if в PHP
Оператор if проверяет выражение. Если значение выражения ненулевое, оно подчиняется значению true, в этом случае выполняется следующий за ним оператор; если же оно равно нулю, т. е. false, то следующий оператор не выполняется. Например:
Скобки вокруг выражения $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) )
echo "х достаточно точно равно " . $n;
Часто проверяемое в операторе if выражение является логическим выражением или сравнением, например, в рассмотренном случае присутствует их комбинация.
В общем случае структура оператора if выглядит следующим образом:
if ( условие ) {
Оператор_1;
Оператор 2;
...
Оператор_последний;
}
Как уже говорилось ранее, составной оператор может быть помещен в любое место программы, в котором может находиться одиночный оператор. Стало быть, выражение, следующее после if, может являться составным оператором. Например:
if ( (d ) {
s;
$r += 45;
}
Часто по условию требуется исполнить более одного не надо
окружать каждое выражение конструкцией if. Вместо этого вы можете сгруппировать несколько выражений в блок выражений, как было показано в предыдущем примере. Не забывайте использовать фигурные скобки, иначе у вас получится:
На первый взгляд, оба оператора после if при истинности условия выполняться. Но компилятор не станет смотреть на то, как вы расставили отступы: оператор
выполнится даже в том случае, если значение выражения ложно. Другими словами можно сказать, что если после if не используются фигурные скобки и количество операторов больше, чем два, то весь принцип работы программы будет заключаться в следующем. Если условие истинно, то будет выполняться первый оператор, который идет после конструкции условия, и все остальные, следующие после этого оператора. В противном случае — ложно именно один первый оператор не выполнится, а все остальные, следующие после него, будут выполняться в заданной последовательности. Проиллюстрируем это на примере:
<?
$а = 3;
if ($a>5)
а + 2;
а + 1;
echo $b;
?>
В ходе выполнения этого примера переменная $b получит значение 4 и будет выведена. В свою очередь строка
будет пропущена в ходе выполнения программы, так как значение выражения в операторе if будет false (ложно). Если бы переменная $а имела значение больше 5, конструкция if позволила бы выполнить в первую очередь выражение
а затем
СОВЕТ
Некоторые программисты в операторах цикла и в операторах выбора всегда используют составные операторы, даже если оператор в нем всего один. Если впоследствии понадобится вставить в блок еще один оператор, то можно будет не опасаться ошибок, вызванных отсутствием скобок. Подобная практика, как и расположение скобок, - дело вкуса. Вырабатывайте свой стиль и придерживайтесь его.
Выражение if может иметь неограниченную степень вложенности в другие выражения if, что позволяет эффективно использовать выполнение по условию различных частей программы. Например:
<?
$а = 5;
$b = 2;
$c = 1;
if($a>3) {
if ($b == 2) {
if < (b == 2)) {
b+5;
$s = 0;
}
$c++;
}
c*2;
)
echo $c;
?>
Результатом выполнения данной программы будет изменение значения переменной с = 1 на $с = 16;.
Обратите внимание, что если вы поставите точку с запятой непосредственно после самого оператора
то это не вызовет никакой ошибки при выполнении программы, как и при работе с каким-либо другим языком программирования. Но правила хорошего тона среди программистов состоят именно в том, чтобы создать как можно более понятный и документируемый код а бесполезное использование точки с запятой после оператора if характеризует ваше отношение к создаваемой программе. Поэтому постарайтесь не допускать таких ошибок.