xandeadx.ru Блог музицирующего веб-девелопера

PHP → Особенность функции in_array()

Опубликовано в

in_array() всегда возвращает true, если в массиве одно из значений $haystack равно нулю и $needle это строка:

$array = array(0, 'one', 'two');
var_dump(in_array('three', $array)); // bool(true)

Чтобы этого не происходило, нужно параметр $strict установить в true:

var_dump(in_array('three', $array, true)); // bool(false)
Написанное актуально для PHP 5.2.x
Похожие записи

Комментарии RSS

добавлю объяснение: в нестрогом режиме то, что ищется приводится к типу текущего элемента массива.

in_array('test', array( 0 ));
Когда мы находимся на элементе 0 то наша переменная "test" приводится к типу int
(int)"test" = 0
то есть 0 == 0
var_dump( in_array('test', array( 0 ) ) ); // bool(true)

В строгом режиме где $strict = true, приведения типа не происходит
"test" !== 0
var_dump( in_array('test', array( 0 ), true) ); // bool(false)

Оставить комментарий

Содержимое этого поля является приватным и не будет отображаться публично. Если у вас есть аккаунт в Gravatar, привязанный к этому e-mail адресу, то он будет использован для отображения аватара.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступные HTML теги: <a> <i> <b> <strong> <code> <ul> <ol> <li> <blockquote> <em> <s>
  • Строки и параграфы переносятся автоматически.
  • Подсветка кода осуществляется с помощью тегов: <code>, <css>, <html>, <ini>, <javascript>, <sql>, <php>. Поддерживаемые стили выделения кода: <foo>, [foo].

Подробнее о форматировании