in_array()无法按预期工作

时间:2011-10-06 01:46:26

标签: php arrays

对于此数组($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  

为什么?

3 个答案:

答案 0 :(得分:24)

这是因为0 == "string" is true0是数组的元素。

$strict中的参数in_array设置为true:

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

答案 1 :(得分:6)

尝试在函数调用中添加第三个参数;

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

这将确保比较是类型严格的,并且应该解决您的问题。

答案 2 :(得分:2)

将第三个参数添加到in_array()并将其设置为TRUE