@khodos_dmitry

Почему такое странное поведение in_array?

$arr = ['25', 'педро'];
$el = 0;
if (in_array($el, $arr)) {
    echo "Да!";
} else {
    echo "Нет!";
}

У меня выводит "Да!"
Видимо происходит конвертирования типов массива в тип $el .
Думаю, что это неправильно. Если разные типы, то нужно конвертировать в string.
Или правильно?
  • Вопрос задан
  • 94 просмотра
Решения вопроса 2
0xD34F
@0xD34F
Раз:

Если strict не установлен, то при поиске будет использовано нестрогое сравнение.


Два:

В случае, если вы сравниваете число со строкой или две строки, содержащие числа, каждая строка будет преобразована в число, и сравниваться они будут как числа.


Три:

Значение определяется по начальной части строки. Если строка начинается с верного числового значения, будет использовано это значение. Иначе значением будет 0 (ноль).
Ответ написан
@dimoff66
Кратко о себе: Я есть
Это поведение и вправду очень странное, но корректируется третьим параметром, выставленным в TRUE

if (in_array($el, $arr, TRUE))
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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