首页 > 语言 > PHP > 正文

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

2024-09-04 11:46:42
字体:
来源:转载
供稿:网友

本文实例讲述了PHP删除数组中指定值的元素。分享给大家供大家参考,具体如下:

测试数组如下:

  1. //这是一个测试数组 
  2. $testArr = array
  3.   't' => 'qq'
  4.   'q' => 'qq'
  5.   'b' => 'baidu'
  6.   'a' => 'ali'
  7.   'm' => 'xiaomi' 
  8. ); 

方法一:

foreach遍历后unset删除,这种方法也是最容易想到的方法.

  1. function delByValue($arr$value){ 
  2.   if(!is_array($arr)){ 
  3.     return $arr
  4.   } 
  5.   foreach($arr as $k=>$v){ 
  6.     if($v == $value){ 
  7.       unset($arr[$k]); 
  8.     } 
  9.   } 
  10.   return $arr

测试:

  1. $testArr = delByValue($testArr,'baidu'); 
  2. print_r($testArr

运行结果:

  1. Array 
  2.     [t] => qq 
  3.     [q] => qq 
  4.     [a] => ali 
  5.     [m] => xiaomi 

方法二:

array_flip之后unset,这种方法有一个弊端,就是反转后由于有两个键值都为qq,有一个数据将会丢失,所以在使用时请谨慎).

  1. function delByValue($arr$value){ 
  2.   $tempArr = array_flip($arr); 
  3.   unset($tempArr[$value]); 
  4.   return array_flip($tempArr); 

测试:

  1. $testArr = delByValue($testArr,'baidu'); 
  2. print_r($testArr

运行结果:

  1. Array 
  2.     [q] => qq 
  3.     [a] => ali 
  4.     [m] => xiaomi 

方法三:

array_search,这种方法亦有弊端,array_search搜索到一个合适的值时便返回,所以在数组存在多个相关的值这种方法不适用).

  1. function delByValue($arr$value){ 
  2.   $key = array_search($value,$arr); 
  3.   if(isset($key)){ 
  4.     unset($arr[$key]); 
  5.   } 
  6.   return $arr

测试:

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

print_r($testArr)

运行结果:

  1. Array 
  2.     [t] => qq 
  3.     [q] => qq 
  4.     [a] => ali 
  5.     [m] => xiaomi 

方法四:

使用array_keys搜索指定的值再循环unset)

  1. function delByValue($arr$value){ 
  2.   $keys = array_keys($arr$value); 
  3.   var_dump($keys); 
  4.   if(!emptyempty($keys)){ 
  5.     foreach ($keys as $key) { 
  6.       unset($arr[$key]); 
  7.     } 
  8.   } 
  9.   return $arr

测试:

  1. $testArr = delByValue($testArr,'baidu'); 
  2. print_r($testArr

运行结果:

  1. array(1) { 
  2.   [0]=> 
  3.   string(1) "b" 
  4. Array 
  5.     [t] => qq 
  6.     [q] => qq 
  7.     [a] => ali 
  8.     [m] => xiaomi 

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表