PHP Почему in_array возвращает true

Вот весь код: in_array(0, ['text', 'caption']) Возвращает true. Версия PHP 7.2, в чем причина?


Ответы (2 шт):

Автор решения: gil9red

Ответ нашел тут.

Функция in_array по умолчанию не использует строгое сравнение, а без этого произойдет странное (в версии до 8, начиная с 8 версии был доработан алгоритм нестрого сравнения и с ним код ниже вернет false):

var_dump(0 == 'text');
// bool(true)

Нужно включить строго сравнение в in_array:

var_dump(in_array(0, ['text', 'caption']));
// bool(true)
 
var_dump(in_array(0, ['text', 'caption'], true));
// bool(false)
→ Ссылка
Автор решения: Евгений Малеев

Установи строгое сравнение

in_array(0, ['text', 'caption'], true)
→ Ссылка