此代码:
var_dump(in_array("000", array(",00", ".00")));
var_dump(in_array("111", array(",11", ".11")));
输出:
bool(true)
bool(false)
为什么第一行会返回true
?
答案 0 :(得分:9)
它与PHP的类型强制有关。 " 000"基本上转换为0
。为了强制它使用严格的类型检查,in_array()
接受第三个参数。
var_dump(in_array("000", array(",00", ".00"), true));
输出:
bool(false)
编辑:@andrekeller还指出".00"
也可能转换为int 0
。故事的道德,不要信任PHP以使类型正确。