【问题标题】:Why in_array function return TRUE when we are looking for an empty string? [duplicate]为什么 in_array 函数在查找空字符串时返回 TRUE? [复制]
【发布时间】:2015-02-24 19:26:30
【问题描述】:

有人可以向我解释为什么这是真的吗?

in_array('', array(0,1,2));

【问题讨论】:

    标签: php


    【解决方案1】:

    因为,正如docs中所说:

    bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )

    除非设置了 strict,否则使用松散比较在 haystack 中搜索 needle

    ... 和 '' == 0 在 PHP 中是 true。如果您想使用严格比较,只需使用三个参数调用in_array()

    in_array('', array(0, 1, 2), true); // false
    

    ...所以类型也会被检查,String '' 将没有机会匹配 Numbers。

    【讨论】:

    【解决方案2】:

    in_array 默认执行松散比较。因此'' 等价于0

    in_array 函数的第三个参数(布尔值)表示匹配是否以 STRICT 方式执行。

    如果你这样做in_array('', array(0,1,2), TRUE);,那么结果将是错误的。

    请参考documentation

    【讨论】:

      猜你喜欢
      • 2018-06-29
      • 1970-01-01
      • 2015-01-16
      • 1970-01-01
      • 2015-02-20
      • 2012-04-12
      • 2010-10-17
      • 1970-01-01
      • 2019-05-04
      相关资源
      最近更新 更多