该函数的这种行为
in_array()而
array_search()不是一个错误,而是有据可查的行为。
这两个函数都有一个名为的第三个可选参数
$strict,默认情况下为FALSE:
bool in_array(混合$ needle,array $ haystack [,bool $ strict = FALSE] )
混合array_search(混合$ needle,数组$ haystack [,bool $ strict = false] )
现在,这意味着默认情况下,两个函数都使用松散(
==)比较来比较值。因此,它们仅 在 PHP类型变戏法 之后
检查值是否相同,而不检查类型。因此,在您的示例中,
TRUE == "any none emtpy string"计算结果为TRUE。
因此,通过在调用函数时将第3个参数设置为TRUE,可以说PHP应该使用strict(
===)比较,并且在比较时应该检查值和值的类型。



