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

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

Есть код:

echo ('         ' == 0) ? 'равны' : 'не равны';
echo ('_' == 0) ? 'равны' : 'не равны';
echo ('1 1' == 1) ? 'равны' : 'не равны';

Выводит "равны", "равны", "равны".
Почему так?
Я конечно понимаю, что в php лучше использовать оператор сравнения "===", но всё же...
  • Вопрос задан
  • 102 просмотра
Подписаться 1 Простой 3 комментария
Помогут разобраться в теме Все курсы
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Stepik
    PHP (pro)
    2 недели
    Далее
Решения вопроса 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 вы можете найти правила преобразований.
Ответ написан
Ваш ответ на вопрос

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

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