Login8
@Login8
Программист, критик, наватор

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

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


Спойлер! Оно выедет "равны", "равны", "равны".
Кто мне ответит почему так?
Я конечно понимаю что в php лучше использовать оператор сравнения "===", но все же...
  • Вопрос задан
  • 90 просмотров
Решения вопроса 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 вы можете найти правила преобразований.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
Бюро Цифровых Технологий Санкт-Петербург
от 120 000 до 180 000 ₽
02 мая 2024, в 21:59
15000 руб./за проект
02 мая 2024, в 21:54
1000 руб./в час
02 мая 2024, в 21:27
300000 руб./за проект