【问题标题】:array_search and destroy logic errorarray_search 和销毁逻辑错误
【发布时间】:2014-02-17 02:03:26
【问题描述】:

我正在尝试搜索一个数组并查看其中是否包含一个值。如果值在数组中,则数组中值的索引将被传递到从数组中删除。

问题是如果找不到值,array_search 返回 FALSE,但由于 false 是布尔值,它也被视为 0。当它被传递给 unset 以从数组中删除值时,索引 0 处的值将是如果 array_search 返回 false,则删除。

我很确定需要将它放入 if 语句中,但如果整数和布尔值都可以返回,我将如何处理响应?

当前代码:

$pos = array_search($value, $array);
unset($array[$pos]);

【问题讨论】:

    标签: php arrays logic


    【解决方案1】:

    PHP Doc 说..

    此函数可能返回布尔值 FALSE,但也可能返回 计算结果为 FALSE 的非布尔值。请阅读关于 布尔值以获取更多信息。使用 === 运算符测试 这个函数的返回值。

    所以你需要这样做

    <?php
    $arr = [1,2,3];
    $pos = array_search(4, $arr);
    if($pos!==false)
    {
    unset($arr[$pos]);
    }
    print_r($arr);
    

    OUTPUT

    Array
    (
        [0] => 1
        [1] => 2
        [2] => 3
    )
    

    如您所见,第一个索引被保留。

    【讨论】:

      【解决方案2】:

      试试这个

      if($pos !== false)
      {
      // do your work to unset
      }
      

      注意 !== 在上面的代码中

      $x !== $y 如果 $x 不等于 $y 则为 True,或者它们不是同一类型

      【讨论】:

        【解决方案3】:

        你可以试试这个脚本,希望对你有帮助...

        if(in_array($value, $array)){
            $pos = array_search($value, $array);
            unset($array[$pos]); 
        }
        

        【讨论】:

          猜你喜欢
          • 2019-09-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-02-04
          相关资源
          最近更新 更多