Подтвердить что ты не робот

In_array() не работает должным образом

Для этого массива ($options):

Array (
    [0] => 0
    [1] => 1
    [2] => 2
)

PHP возвращает TRUE:

$this->assertTrue( in_array('Bug', $options ) );         // TRUE
$this->assertTrue( in_array('Feature', $options ) );     // TRUE
$this->assertTrue( in_array('Task', $options ) );        // TRUE
$this->assertTrue( in_array('RockAndRoll', $options ) ); // TRUE  

Почему?

4b9b3361

Ответ 1

Это связано с тем, что 0 == "string" истинно, а 0 - это элемент массива.

Задайте параметр $strict в in_array равным true:

$this->assertTrue( in_array('Bug', $options, true) );

Ответ 2

Попробуйте добавить третий параметр к вашим вызовам функций;

$this->assertTrue( in_array('Bug', $options, true) ); 

Это гарантирует, что сравнения строгие и должны решить вашу проблему.

Ответ 3

Добавьте третий аргумент в in_array() и установите его в TRUE.