Необходимо избежать случайного присваивания значения при сравнении переменной с константой.
Запись, представленную ниже:
if (12 == $dwarves) { ... }
следует предпочесть такой:
if ($dwarves == 12) { ... }
Если константу расположить слева, то использование оператора присваивания вызовет синтаксическую ошибку. Другими словами, PHP выразит недовольство, если написать:
if (12 = $dwarves) { ... }
но код:
if ($dwarves = 12) { ... }
выполнит молча, сначала присвоив значение 12 переменной $dwarves, а затем отработает код внутри блока. (Выражение $dwarves = 12 приравнивается к 12, что рассматривается как true.)
Размещение константы слева от оператора сравнения приводит результат сравнения к типу константы. Это может вызвать ошибку при сравнении целого числа с переменной, которая может быть целым числом или строкой. Выражение 0 == $dwarves имеет значение true, когда переменная $dwarves равна 0, но оно также истинно, когда $dwarves содержит строку sleepy. Целое число (0) находится слева от оператора сравнения, поэтому перед сравнением PHP преобразует правую часть (строку sleepy) в целое число (0). Во избежание этого вместо оператора сравнения следует применять оператор тождества 0 === $dwarves.