var_dump(in_array(0, array('s' ));
The result of this sentence is bool(true).
Because in_array will compare 0 and 's', 0 is a number type, and 's' is a string type. According to the instructions in the "comparison operators" chapter in the PHP tutorial manual, number and string are compared
When comparing, the string type will be converted to number first, and then the comparison operation will be performed. The result of converting 's' to number is 0, and the result of 0 == 0 is true, so the result of in_array(0, array('s', 'ss')) is also true
If the third parameter strict of in_array is set to true, it will be judged whether the values and types are equivalent during comparison. If they are all equivalent, it will return true, otherwise it will return false.
About php in_array syntax
bool in_array ( mixed $needle , array $haystack [, bool $strict ] ) The return value is straight or false
<?php $a = array('1.10', 12.4, 1.13); if (in_array('12.4', $a, true)) { echo "'12.4' found with strict checkn"; } if (in_array(1.13, $a, true)) { echo "1.13 found with strict checkn"; } ?>