Странный косяк в php 7.4

lutskboy
На сайте с 22.11.2013
Offline
174
235

Привет

есть код

$sort = isset($_POST['sort']) ? $_POST['sort'] : 0;
var_dump($sort);
var_dump($sort == 'date');

если нету пост параметра sort , то  $sort=0

и вы не поверите но var_dump($sort == 'date'); отдает true 

php 8.1 норм

сделал вот так . а то станный глюк какой то

$sort = isset($_POST['sort']) ? $_POST['sort'] : '';

 

W1
На сайте с 22.01.2021
Offline
297
#1
lutskboy :
глюк какой то

Ну у тебя же нестрогое сравнение. Давно известно, что в данном случае результат зачастую непредсказуем:

До PHP 8.0.0, если строка (string) сравнивалась с числом или строкой, содержащей число, то строка (string) преобразовывалось в число перед выполнением сравнения. Это могло привести к неожиданным результатам

И дальше твой случай разобран:

var_dump(0 == "a");

Результат выполнения данного примера в PHP 7:
bool(true)

Результат выполнения данного примера в PHP 8:
bool(false)
Мой форум - https://webinfo.guru –Там я всегда на связи
LEOnidUKG
На сайте с 25.11.2006
Offline
1734
#2

Скорее всего там путаница строк и логики.

Поэтому такие проверки можно делать через:

$sort === 'date'

Или явно указывать, что это строка.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий