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

02.06.2010

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
Похожие записи

Комментарии

Денис Орлов
09.10.2012, 10:34

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

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)

Добавить комментарий