Когда я выполняю этот небольшой фрагмент кода PHP:
php -r "echo(in_array(0, array('aaa', 'bbb')));"
Это звучит верно...
Конечно, у меня хорошее возвращаемое значение, если я добавляю строгий флаг в in_array
, но я просто не могу понять, почему он возвращает true (я не могу !!). Если кто-нибудь сможет мне объяснить, я хорошо буду спать сегодня вечером.
PS: Извините, что это просто любопытство...
Это потому, что для PHP
этот код вернет true
0 == 'aaa'
Поэтому без строгой проверки PHP
найдет ваше значение в заданном массиве.
Также ознакомьтесь с этим кодом:
var_dump(0 == 'aaa');
var_dump(0 === 'aaa');
var_dump(in_array(0, array('aaa', 'bbb')));
var_dump(in_array(0, array('aaa', 'bbb'), true));
Последняя версия позволяет строгое сравнение типов, поэтому она будет работать так, как ожидалось, т.е. возвращает false.