PHP

Операторы == и =: как избежать путаницы

Задача
Необходимо избежать случайного присваивания значения при сравнении переменной с константой.

Решение
Запись, представленную ниже:

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.
Теги:
переменные
Добавлено: 21 Июля 2018 11:09:58 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...