Задать вопрос
Login8
@Login8
Программист, критик, наватор

Почему эти значения равны в php?

Здравствуйте уважаемые знатоки.
Кто знает что выведет этот код?
echo ('         ' == 0) ? 'равны' : 'не равны';
echo ('_' == 0) ? 'равны' : 'не равны';
echo ('1 1' == 1) ? 'равны' : 'не равны';


Спойлер! Оно выедет "равны", "равны", "равны".
Кто мне ответит почему так?
Я конечно понимаю что в php лучше использовать оператор сравнения "===", но все же...
  • Вопрос задан
  • 91 просмотр
Подписаться 1 Простой 3 комментария
Решения вопроса 2
toxa82
@toxa82
Мануал тебе ответит https://www.php.net/manual/ru/types.comparisons.php
Ответ написан
Комментировать
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
Когда используете не строгое сравнение строки и целого числа то происходит не явное преобразование типов
Фактически делается (int)'строка' и потом значения сравниваются
И да, в документации про всё это написано

<?php
var_dump( 
    (int) ('         ')
);

var_dump(
    (int) ('_')
);

var_dump(
    (int) ('1 1')
);


int(0)
int(0)
int(1)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Vitsliputsli
При использовании ==, php перед сравнением выполнит неявные преобразования, если значения имеют разные типы, то одно из значений будет преобразовано к типу другого, и когда они будут иметь схожие типы будет выполнено сравнение. В мануле php вы можете найти правила преобразований.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы