【问题标题】:Why does in_array return false for this search?为什么 in_array 对此搜索返回 false?
【发布时间】:2021-01-01 13:02:27
【问题描述】:

为什么下面的代码返回false?它应该返回 true。

in_array(
    '/wp-content/uploads/2020/08/SJ-R42027-CZ-SG-1-scaled-1.jpg',
    [
        'https://example.com/wp-content/uploads/2020/08/SJ-R42027-CZ-SG-1-scaled-1.jpg'
    ],
    false
)

Online code editor

【问题讨论】:

  • in_array() 期望搜索值作为完整值存在,您希望它看起来是部分匹配。
  • php.net/manual/en/function.stripos.php 根据您要执行的操作会更合适。如果你需要在多个值中搜索,那么你可以编写一个循环来迭代或使用array_map()。

标签: php arrays php-7


【解决方案1】:

这是正确的行为。

该数组中没有字符串/wp-content/uploads/2020/08/SJ-R42027-CZ-SG-1-scaled-1.jpg

【讨论】:

    【解决方案2】:

    我认为您误解了“严格”​​的说法。例如。

    in_array('3', [1, 2, 3, 4], true); // ==> false because the string '3' !== 3
    

    但是,如果您不传递第三个参数或传递它false

    in_array('3', [1, 2, 3, 4]);        // ==> true because '3' == 3
    in_array('3', [1, 2, 3, 4], false); // ==> true because '3' == 3
    

    但是,在您的情况下,即使使用松散的==,字符串也不匹配:

    '/wp-content/uploads/2020/08/SJ-R42027-CZ-SG-1-scaled-1.jpg' == 
        'https://example.com/wp-content/uploads/2020/08/SJ-R42027-CZ-SG-1-scaled-1.jpg'
    // ==> false
    

    【讨论】:

      猜你喜欢
      • 2017-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-07
      • 2013-09-18
      • 1970-01-01
      相关资源
      最近更新 更多