@AlexLichi

Почему if в PHP выдает неверный результат, когда он внутри foreach()?

<?
$array = array(
"a1" => 0,
"b1" => "L",
"b2" => 2,
);
foreach($array as $key => $value)
{
if($value == "F") echo "Совпали";
echo $value;
}

почему выдает "Совпали"?
  • Вопрос задан
  • 321 просмотр
Решения вопроса 1
Winsik
@Winsik
сис.админ, недопрограммист :)
приведение типов сработало , используйте три знака равенства
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Melkij
@Melkij
PostgreSQL DBA
Упрощайте.
Foreach ни при чём. Обычные фокусы приведения типов.
var_dump('L' == 'F', 0 == 2, 0 == 'F', 'F' == 0, (int) 'F', '0' == 'F', 'F' == '0');

Не число приводится к строке и сравнивается, а строка приводится к числу. F не является числом, поэтому приводится к 0. 0 равен 0? Да, такое условие истинно.

Сравнение с учётом типов - $op1 === $op2
Ответ написан
Комментировать
flygrounder
@flygrounder
Python/Django
0 равен любой строке, которую нельзя привести к числу
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы