Операторы присвоения
Реально существует только один оператор присвоения, но PHP предлагает дюжину сокращенных форм этого оператора, совмещенных с другим оператором, при этом зачастую определяемым как оператор присвоения. В табл. 2.7 перечислены операторы присвоения.
Переменные, операторы и выражения
Переменные, операторы и выражения
Все операторы присвоения выполняют операцию присвоения переменной определенного значения. Можно сказать, что они размещают значение правой части выражения в левой части. Этот порядок нельзя изменить. Операторы, которые совмещают функции оператора присвоения с другими операторами, берут операнды как из левой, так и из правой части выражения. В листинге 2.11 продемонстрированы эквивалентные операторы.

| Листинг 2.11. Использование операторов присвоения
<?php
//прибавить 5 к переменной Count
$Count = 0;
$Count = $Count + 5;
// прибавить 5 к переменной Count
$Count = 0;
$Count += 5;
//напечатать 13
print($a = $b = 13);
print("<br>n");
// напечатать 7
$Count = 2;
print($Count += 5);
print("<br>n");

 Выражения присвоения дают присваиваемое значение, что позволяет использовать их там, где можно разместить саму переменную. Они также позволяют выстраивать цепочки операций присвоения. Например, выражение print($a = $b = 13) печатает 13 и присваивает 13 как a, так и b. Операторы, объединяющие другие операторы с оператором присвоения, присваивают окончательное значение, а не значение из правой части. 

Логические операторы и операторы сравнения
Операторы сравнения выполняют сравнение значений и возвращают значение TRUE или FALSE. Логические операторы выполняют логические операции над значениями TRUE и FALSE. Значения, которые используются с логическими операторами, перед операцией сравнения преобразуются в логические значения. Для числовых значений нулевое значение интерпретируется как FALSE, а все остальные - как TRUE. Пустые строки возвращают значение FALSE, а любая непустая строка возвращает значение TRUE. В табл. 2.8 приведены логические операторы и операторы сравнения.
Переменные, операторы и выражения
Эти операторы позволяют установить отношение между двумя операндами. Когда оба оператора являются строками, выполняется лексикографическое сравнение. Если хотя бы один из операндов не является строкой, то производится арифметическое сравнение. Нецифровые значения на лету преобразуются в числа в соответствии с правилами преобразования до того, как будет произведено сравнение.
Заметим, что оператор равенства очень похож на операцию сравнения. Это и понятно. Один оператор производит действие уравнения обеих частей, и правая часть копируется в переменную, расположенную в левой части. Другой оператор задает вопрос: "Являются ли обе части равными?" Опасность заключается в том, что очень сложно заметить момент, когда они перепутаны. PHP позволяет разместить присвоение внутри скобок оператора if. Если в вашем распоряжении имеется оператор if, который, как кажется, делает свою оценку одним способом, убедитесь в том, чтобы вместо == не было указано =. При сравнении значения переменной и константы размещайте константу слева. Если при этом ошибочно был указан оператор присвоения, анализатор PHP генерирует код ошибки. 
Если вы не знакомы с логическими операциями, обратитесь к табл. 2.9. В двух первых столбцах перечислены все возможные комбинации значений p и q, которыми обозначаются выражения сравнения. В остальных четырех столбцах показаны результаты выполнения логических операций над значениями p и q.
Переменные, операторы и выражения
В табл. 2.8 приведены две версии логических операторов. Например, есть как оператор &&, так и оператор AND. С точки зрения действия они идентичны, но различаются с точки зрения предоставления приоритета (подробнее эта тема рассматривается в конце главы). Если отбросить в сторону проблему приоритетности, их можно считать взаимозаменяемыми.
PHP оценивает выражение только с точки зрения получения окончательного значения. Для большинства бинарных операторов это требует учета обоих операндов. Например, нельзя сказать, чему равняется сумма 4 + 6, не приняв во внимание значения 4 и значения 6. Существуют два оператора, которые являются исключением из этого правила, - операторы "логического И" и "логического ИЛИ".
В листинге 2.12 продемонстрированы сокращенные логические выражения.

| Листинг 2.12. Сокращенные логические выражения_
<?php
$numerator = 5; $divisor = 0;
if(($divisor == 0) OR (($num / $divisor) > 1)) {
print("Результат превышает 1");
}
?>

Оператор if сначала проверяет, является ли делитель нулем. Деление числа на нуль приводит к выводу предупреждения. Математически результатом такого действия будет неопределенность. Если анализатор PHP определяет, что делитель равен нулю, то он уже не производит дальнейшей оценки выражения "логического ИЛИ". Он уже заранее знает, что все выражение дает значение TRUE. Это позволяет избежать вывода сообщения об ошибке. Аналогично, выражение "логического И" дает значение FALSE, если выражение слева дает значение FALSE.
Операторы === и !== сравнивают как значение, так и тип. Например, целое значение 0 и вещественное число 0.00 равны, а выражение 0 == 0.00 дает значение TRUE. Но они являются значениями различных типов, поэтому 0 === 0.00 дает значение FALSE. Это может быть очень кстати, когда функция возвращает целое или строку при успешном значении и значение FALSE или NULL при ошибке. Если функция возвращает нуль или пустую строку, она может вернуть значение FALSE. Оператор === позволяет отличать типы операндов, которые возвращают значение FALSE при преобразовании в логический тип, и значения, которые объявлены как логические.