【问题标题】:in_array does not work correctly when dealing with strings [duplicate]处理字符串时 in_array 无法正常工作 [重复]
【发布时间】:2015-04-10 19:55:09
【问题描述】:

这段代码:

var_dump(in_array("000", array(",00", ".00")));
var_dump(in_array("111", array(",11", ".11")));

输出:

bool(true)
bool(false)

为什么第一行返回true

【问题讨论】:

  • 会不会和this behaviour有关系?
  • 我已经编辑了你的标题。请记住,对于搜索相同问题的其他人来说,“不起作用”是对问题的模糊描述!

标签: php


【解决方案1】:

这与 PHP 的类型强制有关。 “000”基本上只转换为0。为了强制它使用严格的类型检查,in_array() 接受第三个参数。

var_dump(in_array("000", array(",00", ".00"), true));

输出:

bool(false)

编辑:@andrekeller 还指出 ".00" 也可能被转换为 int 0。故事的寓意,不要相信 PHP 可以正确地获取类型。

【讨论】:

  • 我会写类似的,+1
  • 同意,删除了我的类似答案
  • @andrekeller 也会支持你。你的回答也是正确的,因为它提到了 .00 也被转换了。了解 PHP 可能两者兼而有之
  • @Cfreak:那么更新你的答案,几乎相同的答案没有意义
猜你喜欢
  • 2014-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-10
  • 2017-01-22
  • 1970-01-01
  • 2019-11-27
相关资源
最近更新 更多