Выражения
 
  Выражения — самые важные строительные элементы PHP. Почти всё, что разработчик пишет
  в PHP, — выражение. Самое простое и точное определение
  выражения — «всё, что вычисляется как значение».
 
 
  Главные формы выражений — константы и переменные. В записи
  $a = 5 значение 5 присвоится переменной
  $a. Значение 5, очевидно, содержит значение 5 или, говоря по-другому,
  5 — выражение со значением 5; в этом случае 5 — целочисленная
  константа.
 
 
  После этого присваивания ожидается, что значение переменной $a
  тоже равно 5, поэтому, когда записывают $b = $a,
  ожидают, что это сработает так же,
  как если бы написали $b = 5. Говоря по-другому,
  переменная $a — тоже выражение со значением 5. Всё так и произойдёт,
  если всё работает правильно.
 
 
  Немного более сложные примеры выражений — функции. Например,
  рассмотрим следующую функцию:
  
  
  
   Разработчик, который познакомился с концепцией функций
   в главе «О функциях»,
   мог бы предположить, что присваивание $c = foo()
   по смыслу аналогично присваиванию $c = 5, и оказался бы прав.
   Функция — выражение, значение которого равно тому, что возвращает функция.
   Значение выражения foo() равно 5,
   поскольку функция foo() возвращает 5.
   Часто функции не просто возвращают статическое значение,
   а что-то вычисляют.
  
  
   Конечно, значения в PHP не обязаны быть целочисленными,
   и часто это не так. Язык PHP поддерживает четыре типа скалярных значений:
   целочисленные int, значения с плавающей точкой float,
   строковые string и логические bool.
   Скалярными называются значения, которые нельзя «разбить»
   на меньшие части, в отличие, например, от массивов. Ещё PHP поддерживает два
   сложных (составных, композитных — нескалярных) типа: массивы и объекты. Каждый из этих
   типов значений возможно присвоить переменной или вернуть из функции.
  
  
   Однако PHP использует выражения значительно шире, точно так же, как это делают другие языки.
   PHP — язык с ориентацией на выражения, который почти всё в коде рассматривает
   как выражение. Вернёмся к тому примеру, с которым уже имели дело:
   $a = 5. Легко заметить, что здесь содержится два значения —
   значение целочисленной константы 5 и значение переменной $a,
   которая также принимает значение 5. Но, хотя это неочевидно, здесь содержится ещё одно
   значение — значение самого присваивания. Само присваивание вычисляется
   в значение, которое присваивется переменной, в приведённом примере — в значение 5. Поэтому
   выражение $a = 5 независимо от того, что оно делает, —
   это выражение со значением 5. Поэтому запись $b = ($a = 5)
   равносильна записи $a = 5; $b = 5; (точка с запятой означает конец инструкции).
   Разработчику также доступна запись $b = $a = 5,
   поскольку операции присваивания анализируются справа налево.
  
  
   Другой хороший пример ориентированности на выражения — префиксный
   и постфиксный инкремент и декремент. Пользователи PHP
   и других языков, возможно, уже знакомы с формой записи variable++
   и variable--. Это 
   операторы инкремента и декремента. Как и язык Си, язык PHP
   поддерживает два типа инкремента — префиксный и постфиксный. Они
   оба инкрементируют значение переменной и эффект их действия на неё
   одинаков. Разница состоит в значении выражения инкремента.
   Префиксный инкремент, записываемый как ++$variable,
   вычисляется в инкрементированное значение (PHP инкрементирует переменную до того
   как прочесть её значение, отсюда название «преинкремент»).
   Постфиксный инкремент, записываемый как $variable++,
   вычисляется в первоначальное значение переменной $variable до её приращения
   (PHP вначале читает значение переменной и только потом инкрементирует её, отсюда
   название «постинкремент»).
  
  
   Распространённые типы выражений — выражения сравнения.
   Эти выражения вычисляются либо как false (ложь),
   либо как true (истина). PHP поддерживает операции сравнения > (больше), >= (больше
   либо равно), == (равно), != (не равно), < (меньше) и <=
   (меньше либо равно). Он также поддерживает операторы строгого
   равенства: === (равно и одного типа) и !== (не равно или не одного
   типа). Обычно этими выражениями пользуются в операторах условного выполнения,
   например, инструкции if.
  
  
   Последний пример выражений, который здесь рассматривается,
   это смешанные выражения операции и присваивания. Уже известно, что когда
   требуется увеличить значение переменной $a на 1, записывают
   $a++ или ++$a. Но что, если потребуется
   прибавить больше единицы, например 3? Можно было бы написать
   $a++ много раз, однако, очевидно, это нерационально и неудобно.
   Наиболее распространённая практика — запись вида $a = $a + 3.
   Выражение $a + 3 вычисляется в значение переменной $a, к которому
   прибавляется 3 и снова присваивается значение переменной $a, увеличивая в результате
   значение переменной $a на 3. В PHP, как и в ряде других языков, например Си,
   это же присваивание записывается короче, что увеличит очевидность смысла
   и скорость понимания кода по прошествии времени. Тройку к текущему значению
   переменной $a прибавляют так: $a += 3.
   Это означает дословно «взять значение переменной $a, прибавить
   к нему значение 3 и снова присвоить результат сложения переменной $a». Кроме
   большей понятности и краткости, это быстрее работает. Значением
   выражения $a += 3, как и стандартного присваивания, станет
   значение, которое присвоилось переменной. Обратите внимание, что это НЕ 3, а суммированное значение
   переменной $a плюс 3 (то, что присвоилось перменной $a).
   Поэтому разрешается использовать любой бинарный оператор, например,
   $a -= 5 (вычесть 5 из значения переменной $a),
   $b *= 7 (умножить значение переменной $b на 7)
   и т. д.
  
  
   Ещё одно выражение, которое выглядит необычно,
   если читатель не встречал такое выражение в других языках, — тернарный условный
   оператор:
  
  
   
  
  
   Если значение первого подвыражения — true (ненулевое значение),
   то выполняется второе подвыражение, которое и будет результатом
   условного выражения. Или выполняется третье
   подвыражение и его значение будет результатом.
  
  
   Задача следующего примера — помочь немного улучшить понимание
   префиксного и постфиксного инкремента и выражений:
  
  
   
  
  
   Иногда PHP рассматривает выражения как инструкции.
   В этом случае у инструкции следующий вид — «expr ;», то есть выражение,
   за которым следует точка с запятой. В записи $b = $a = 5;,
   часть $a = 5 — допустимое выражение, но оно само — не инструкция.
   Тогда как запись $b = $a = 5; — допустимая инструкция.
  
  
   Последнее, что вспомним, — истинность значения выражений.
   Обычно в условных операторах и циклах
   может интересовать не конкретное значение выражения, а только
   его истинность (значение true или false).
   
   Регистронезависимые константы true и false — два
   возможных логических значения. Выражения автоматически преобразовываются
   в логические значения, когда требуется. Подробнее о преобразовании типов рассказывает раздел
   Приведение типов.
  
  
   Язык PHP со всей полнотой и мощностью реализует выражения,
   а полное документирование выражений выходит за рамки руководства.
   Приведённые примеры дают представление о выражениях, о том, что
   они из себя представляют, и как создавать полезные
   выражения. В остальной части руководства
   допустимые PHP-выражения обозначают сокращением expr.