[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Излишняя проверка ===
Xes
$_POST['table'] === 'hotels' || $_POST['table'] === 'addhotels'


Как я понимаю такая проверка "===" является излишней так как исходный тип всех данных в массиве Пост является строковым?
Даже если пост будет "0" это всеравно строка и они не будут равны даже при "==" таком сравнении?

Вроди как я в этом убедился отредактировав локально сохраненный файл и отправив на сервер запрос. Но хотелось бы услышать так ли все или я чтото упустил, может еще какие подвохи могут быть?
alex12060
Xes

Цитата
исходный тип всех данных в массиве Пост является строковым?


Да, такой.

Цитата
Даже если пост будет "0" это всеравно строка и они не будут равны даже при "==" таком сравнении?


Нет, не верно.

Сравнение вида: ==
означает, что сравниваются символы, в независимости от их типа, а когда 3 знака равно, то сравниваются еще и по типу. Можно делать вот так:


if ($_POST['id'] == 3)
if ($_POST['id'] == '3')
# or this
if ((int)$_POST['id'] === 3)
Kuliev
Цитата (Xes @ 9.10.2011 - 10:16)
$_POST['table'] === 'hotels' || $_POST['table'] === 'addhotels'


Как я понимаю такая проверка "===" является излишней так как исходный тип всех данных в массиве Пост является строковым?
Даже если пост будет "0" это всеравно строка и они не будут равны даже при "==" таком сравнении?

Вроди как я в этом убедился отредактировав локально сохраненный файл и отправив на сервер запрос. Но хотелось бы услышать так ли все или я чтото упустил, может еще какие подвохи могут быть?

Пример Название Результат
$a == $b Равно TRUE если $a равно $b.
$a === $b Тождественно равно TRUE если $a равно $b и имеет тот же тип. (Добавлено в PHP 4)
$a != $b Не равно TRUE если $a не равно $b.
$a <> $b Не равно TRUE если $a не равно $b.
$a !== $b Тождественно не равно TRUE если $a не равно $b или в случае, если они разных типов (Добавлено в PHP 4)
$a < $b Меньше TRUE если $a строго меньше $b.
$a > $b Больше TRUE если $a строго больше $b.
$a <= $b Меньше или равно TRUE если $a is меньше или равно $b.
$a >= $b Больше или равно TRUE если $a больше или равно $b.
Xes
Цитата

Цитата
Даже если пост будет "0" это всеравно строка и они не будут равны даже при "==" таком сравнении?


Нет, не верно.


Как жишь так жишь.

Конкретно про излишней третий знак = здесь $_POST['table'] === 'hotels'
Переменная пост строковая я ее сравниваю со строкой. Даже если в переменной пост содержится "0" или, я не знаю, любая другая комбинация символов.
То для проверки достаточно писать ниже следующее, т.к. в данном случае php $_POST не во что конвертировать не будет так как $_POST -изначально строка и 'hotels' тожже строка:
$_POST['table'] == 'hotels'  


Так если третий знак равенства здесь лишний.
alex12060
Ничего не понял к сожалению.
Xes
Отредактировал оставил суть.
alex12060
В принципе, я понял твои мысли так:

В массиве $_POST всегда приходит строка, то, нужно ли использовать при сравнении === ?

Ответ: Не обязательно, вполне всегда можно обойтись == , так как в основном, все равно, строка или число, это роли не играет.
imbalance_hero
Xes
Я не пользуюсь вообще ===, так как и просто == хватает.

alex12060
Если может прийти массив, а не "всегда строка".

linker
imbalance_hero
Спорим пользуешься?

_____________
Gear Framework
Gear Framework на Github
imbalance_hero
linker
Ты знаешь про меня что-то? О_о smile.gif
Я вот пытаюсь вспомнить место, где я мог бы использовать - на ум не приходит smile.gif
linker
smile.gif Как минимум первое что требует использования ===, так это strpos(), потом array_search(), потом readdir() и т.д. Мест где без === не обойтись предостаточно.

_____________
Gear Framework
Gear Framework на Github
yurij__
кстати === работает немного быстрей (за счет того что не выполняется приведение типов).
Но прирост скорости настолько смехотворен, что заметить его можно лишь в цикле, с количеством итераций в районе миллиона (то есть почти никогда в реальных проектах)
imbalance_hero
linker
Ты абсолютно прав, именно strpos у меня используется, и там как раз !== false smile.gif
linker
imbalance_hero
wink.gif так то smile.gif

_____________
Gear Framework
Gear Framework на Github
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.