Переменные имеют тип и значение.
при использовании этих переменных (в PHP), иногда у Вас нет хорошего типа. Например, если Вы делаете
if ($var == 1) {... do something ...}
, PHP должны преобразовать ("для кастинга") $var к целому числу. В этом случае, "$var == 1" верен, потому что любая непустая строка является литой к 1.
При использовании ===, Вы проверяете, что значение И ТИП равны, таким образом, "$var === 1" является ложью.
Это полезно, например, когда у Вас есть функция, которая может возвратить false (на ошибке) и 0 (результат):
if(myFunction() == false) { ... error on myFunction ... }
Этот код является неправильным, как будто myFunction()
возвраты 0, это является литым ко лжи, и у Вас, кажется, есть ошибка. Корректный код:
if(myFunction() === false) { ... error on myFunction ... }
, потому что тест - то, что возвращаемое значение "является булевской переменной и является ложью" и не, "может быть литым ко лжи".
другая адаптация для обработки значений:
def lower_keys(x):
if isinstance(x, str):
return (x.lower())
if isinstance(x, list):
return [lower_keys(v) for v in x]
elif isinstance(x, dict):
return dict((k.lower(), lower_keys(v)) for k, v in x.items())
else:
return x