php删除数组中指定值的元素的几种方法

测试数组如下:

 

[php] view plain copy

  1. //这是一个测试数组  

  2. $testArr = array(  

  3.     't' => 'qq',  

  4.     'q' => 'qq',  

  5.     'b' => 'baidu',  

  6.     'a' => 'ali',  

  7.     'm' => 'xiaomi'  

  8. );  

方法一:

 

 

[php] view plain copy

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

  2. function delByValue($arr$value){  

  3.     if(!is_array($arr)){  

  4.         return $arr;  

  5.     }  

  6.     foreach($arr as $k=>$v){  

  7.         if($v == $value){  

  8.             unset($arr[$k]);  

  9.         }  

  10.     }  

  11.     return $arr;  

  12. }  


方法二:

 

 

[php] view plain copy

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

  2. function delByValue($arr$value){  

  3.     $tempArr = array_flip($arr);  

  4.     unset($tempArr[$value]);  

  5.     return array_flip($tempArr);  

  6. }  

方法三:

 

 

[php] view plain copy

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

  2. function delByValue($arr$value){  

  3.     $key = array_search($value,$arr);  

  4.     if(isset($key)){  

  5.         unset($arr[$key]);  

  6.     }  

  7.     return $arr;  

  8. }  


方法四:

 

 

[php] view plain copy

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

  2. function delByValue($arr$value){  

  3.     $keys = array_keys($arr$value);  

  4.     var_dump($keys);  

  5.     if(!empty($keys)){  

  6.         foreach ($keys as $key) {  

  7.             unset($arr[$key]);  

  8.         }  

  9.     }  

  10.     return $arr;  

  11. }  

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

 

 联系我们

  • 邮箱:admin@admincms.top
  • 官方博客:blog.admincms.top
  • 官方微信公众号:huayuejishu
扫描二维码关注Joker.Liu微信公众号
TOP博客官方微信公众号二维码