PHP's in_array unexpected result

2020-04-18 08:57发布

问题:

When I execute this small piece of PHP code:

php -r "echo(in_array(0, array('aaa', 'bbb')));"

That echoes true...

Of course I have the good return value if I add the strict flag to in_array, but I just can't understand why it returns true (I can't !!). If anyone can explain me I will sleep well tonight.

PS: Sorry that this is just about curiosity...

回答1:

That's because for PHP this code will return true

0 == 'aaa'

So without strict checking PHP will find your value in given array.



回答2:

Also, check out this code:

   var_dump(0 == 'aaa');
   var_dump(0 === 'aaa');
   var_dump(in_array(0, array('aaa', 'bbb')));
   var_dump(in_array(0, array('aaa', 'bbb'), true));

The last version allows strict type comparison so it will work as expected, that is return false.



标签: php arrays