此代码:
var_dump(in_array("000", array(",00", ".00")));
var_dump(in_array("111", array(",11", ".11")));
输出:
bool(true)
bool(false)
为什么第一行返回true
?
这与PHP的类型强制有关。"000"基本上只转换为0
。为了强制它使用严格的类型检查,in_array()
接受第三个参数。
var_dump(in_array("000", array(",00", ".00"), true));
输出:
bool(false)
EDIT:@andrekeller还指出,".00"
可能也被转换为int 0
。这个故事的寓意是,不要相信PHP会正确处理类型。