PHP странно себя ведёт при сравнение нуля и "*"

Я в шоке от php… Может быть чего-то не понимаю, в гугле ничего не нашел. Выполните, пожалуйста, этот код:

$a = '0';
$b = 0;
$c = '1';
$d = 1;
if($a == '*') echo 'A = *;<br />';
if($b == '*') echo 'B = *;<br />';
if($c == '*') echo 'C = *;<br />';
if($d == '*') echo 'D = *;<br />';

Когда сравнивается через == нуль (именно int тип) со строкой '*', выдаёт TRUE.
Сравнение через === и нуль string ('0') даёт FALSE
  • Вопрос задан
  • 2604 просмотра
Решения вопроса 1
@edogs
Дык приведение же типов. Правый аргумент приводится к типу левого аргумента. Т.е. '*' приводится к 0, соответственно становится 0.
И это не только со *, а с чем попало не цифровым. Попробуйте a, b, + и т.д.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
ilyaplot
@ilyaplot
PHP программист
можно попробовать
$a = *;
if ($a == strval(0))
Вообще я за типизацию переменных. В 5.4 уже начали это делать. Очень жду.
Ответ написан
Ваш ответ на вопрос

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

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