В прошлой заметке мы рассмотрели синтаксис условного оператора в PHP. В этой заметке речь пойдет об операторных скобках. С ними вы будете сталкиваться постоянно. Это базовое понятие любого языка программирования.
На вопрос, что такое операторные скобки, нам поможет ответить Wikipedia:
Операторные скобки — скобки или команды, определяющие в языке программирования блок команд, воспринимаемый как единое целое, как одна команда.
В языке Pascal для обозначения операторных скобок используется конструкция begin…. end. В Си-подобных языках (к коим относится и PHP), операторные скобки описываются с помощью символов {…}.
Т.е. другими словами, несколько команд, заключенных в операторные скобки воспринимаются как 1 команда.
В статье об условиях в PHP был пример:
<?php $a = 5; $b = 10; if ($a > $b) { echo "Переменная A больше, чем B"; } else { echo "Переменная B больше, чем A"; } ?>
В этом примере операторные скобки используются 2 раза. Они обрамляют операторы
- echo «Переменная A больше, чем B»;
- echo «Переменная B больше, чем A»;
В этом примере в скобки заключен всего 1 оператор, так что это равносильно вот такой записи:
<?php $a = 5; $b = 10; if ($a > $b) echo "Переменная A больше, чем B"; else echo "Переменная B больше, чем A"; ?>
Синтаксис:
if (условие) выражение 1; else выражение 2;
Допустим, мы хотим, чтобы в случае невыполнения условия на экран также выводилась еще одна строка. Также изменим значения наших переменных так, чтобы теперь $a была > $b. Модифицируем наш код:
<?php $a = 20; $b = 10; if ($a > $b) echo "Переменная A больше, чем B. "; else echo "Переменная B больше, чем A. "; echo "Да..да А на самом деле меньше B. "; ?>
Выполняем… Что же мы видим на экране:
Переменная A больше, чем B. Да..да А на самом деле меньше B.
Где-то здесь закралась ошибка. Как вы уже догадались все дело в том, что так как у нас условие истинно (а > b), то выполняется код:
echo "Переменная A больше, чем B. ";
В ветке else у нас содержится только 1 выражение:
echo "Переменная B больше, чем A. ";
Следующее выражение будет выполняться не зависимо от условия. Вот так:
<?php $a = 20; $b = 10; if ($a > $b) echo "Переменная A больше, чем B. "; else echo "Переменная B больше, чем A. "; echo "Да..да А на самом деле меньше B. "; ?>
Теперь используем операторные скобки и объединим 2 выражения в ветке else:
<?php $a = 20; $b = 10; if ($a > $b) { echo "Переменная A больше, чем B. "; } else { echo "Переменная B больше, чем A. "; echo "Да..да А на самом деле меньше B. "; } ?>
Код стал гораздо наглядней. Теперь PHP понимает, что в случае невыполнения условия ($a > $b) нужно вывести 2 строки. А если условие истинно — только одну.
Мой вам большой совет — всегда используйте операторные скобки, даже если не нужно объединять несколько операторов в 1 блок. Дело в том, что:
- код так лучше воспринимается. Окинув быстрым взглядом код, мы видим отдельные его блоки, а не винегрет из букв и цифр.
- в старый код частенько приходиться вносить изменения. Если у вас не стояли операторные скобки, а вы (как в нашем случае) дописали какой-то код, то логика программы будет неверной. Вы можете даже сразу этого не заметить.