Неожиданный результат PHP in_array

1

Когда я выполняю этот небольшой фрагмент кода PHP:

php -r "echo(in_array(0, array('aaa', 'bbb')));"

Это звучит верно...

Конечно, у меня хорошее возвращаемое значение, если я добавляю строгий флаг в in_array, но я просто не могу понять, почему он возвращает true (я не могу !!). Если кто-нибудь сможет мне объяснить, я хорошо буду спать сегодня вечером.

PS: Извините, что это просто любопытство...

Теги:
arrays

2 ответа

2
Лучший ответ

Это потому, что для PHP этот код вернет true

0 == 'aaa'

Поэтому без строгой проверки PHP найдет ваше значение в заданном массиве.

  • 0
    Это так странно, но ты прав. Как получается, что 0 == false, 0 == 'aaa', но 'aaa'! = False?
  • 1
    Извини, я только что понял, спасибо.
1

Также ознакомьтесь с этим кодом:

   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.

  • 0
    Да, я был уверен, что это никогда не случится со мной снова, но это случилось (теперь я чувствую себя старым ;-)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню