PHP删除数组中指定值的元素常用方法实例分析

PHP删除数组中指定值的元素。具体如下:

测试数组如下:

  //这是一个测试数组  $testArr = array(    't' => 'qq',    'q' => 'qq',    'b' => 'baidu',    'a' => 'ali',    'm' => 'xiaomi'  );

方法一:

  //foreach遍历后unset删除,这种方法也是最容易想到的方法  function delByValue($arr, $value){    if(!is_array($arr)){      return $arr;    }    foreach($arr as $k=>$v){      if($v == $value){        unset($arr[$k]);      }    }    return $arr;  }

测试:

  $testArr = delByValue($testArr,'baidu');  print_r($testArr)

运行结果:

Array
(
[t] => qq
[q] => qq
[a] => ali
[m] => xiaomi
)

方法二:

  //array_flip之后unset,这种方法有一个弊端,就是反转后由于有两个键值都为qq,有一个数据将会丢失,所以在使用时请谨慎)  function delByValue($arr, $value){    $tempArr = array_flip($arr);    unset($tempArr[$value]);    return array_flip($tempArr);  }

测试:

  $testArr = delByValue($testArr,'baidu');  print_r($testArr)

运行结果:

Array
(
[q] => qq
[a] => ali
[m] => xiaomi
)

方法三:

  //array_search,这种方法亦有弊端,array_search搜索到一个合适的值时便返回,所以在数组存在多个相关的值这种方法不适用)  function delByValue($arr, $value){    $key = array_search($value,$arr);    if(isset($key)){      unset($arr[$key]);    }    return $arr;  }

测试:

  $testArr = delByValue($testArr,'baidu');  print_r($testArr)

运行结果:

Array
(
[t] => qq
[q] => qq
[a] => ali
[m] => xiaomi
)

方法四:

  //使用array_keys搜索指定的值再循环unset)  function delByValue($arr, $value){    $keys = array_keys($arr, $value);    var_dump($keys);    if(!empty($keys)){      foreach ($keys as $key) {        unset($arr[$key]);      }    }    return $arr;  }

测试:

  $testArr = delByValue($testArr,'baidu');  print_r($testArr)

运行结果:

array(1) {
[0]=>
string(1) “b”
}
Array
(
[t] => qq
[q] => qq
[a] => ali
[m] => xiaomi
)

四种方法总结下来,真正比较可行的还是方法1和方法4了,至于这两种方法哪个更好,那就应该是具体情况具体分析了。

© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享
评论 抢沙发

请登录后发表评论