in_array() does not work as expected [duplicate]
For this array ($options)
:
Array (
[0] => 0
[1] => 1
[2] => 2
)
PHP returns 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_开发者_如何学Carray('RockAndRoll', $options ) ); // TRUE
Why?
This is because 0 == "string"
is true, and 0
is an element of the array.
Set the parameter $strict
in in_array
to true:
$this->assertTrue( in_array('Bug', $options, true) );
Try adding a third parameter to your function calls;
$this->assertTrue( in_array('Bug', $options, true) );
This will ensure the comparisons are type-strict, and should solve your problem.
Add a third argument to in_array()
and set it to TRUE
.
精彩评论