删除数组与二维数组值的php代码

方法如下:

  1. $arr = array(…………) ;//假设有一万个元素的数组,里面有重复的元素。  
  2. $arr = array_flip(array_flip($arr)); //这样便可以删除重复元素。 

究竟是怎么回事呢?来看下array_flip()的作用:array_flip()用于将一个数组的每个元素的键和值交换,如:

  1. $arr1 = array (”age” => 30, “name” => “快乐园”);  
  2. $arr2 = array_flip($arr1); //$arr2 就是 array(30 => “age”, “快乐园” => “name”);  

在php的数组中,允许不同的元素可以取同一个值,但不允许同一个键名被不同的元素使用,如:

  1. $arr1 = array (”age” => 30, “name” => “快乐园”, “age” => 20); “age” => 20将会取代”age” => 30  
  2. $arr1 = array (”name” => “快乐园”, “age” => 45);  

这里 $arr1与$arr2是相等的,于是,我们便可以知道,为什么array_flip(array_flip($arr))可以删除数组中重复的元素了,首先,$arr里的值会变成键名,因为值是有重复的,变成键名之后这些重复的值便成了重复的键名,PHP引擎将重复的键名删除,只保留最后一个。如:

  1. $arr1 = array (”age” => 30, “name” => “快乐园”, “age” => 20);  
  2. $arr1 = array_flip($arr1); //$arr1 变成了 array(”快乐园” => “name”, 20 => “age”);  
  3. //再把 $arr1 的键名与值还复:  
  4. $arr1 = array_flip($arr1); 

上面的代码写得简洁一些就是:$arr1 = array_flip(array_flip($arr1));

上面写了一篇关于数组去重的文章,但是仅限于一维数组,下面的函数可以用于二维数组:

  1. //二维数组去掉重复值 
  2. function array_unique_fb($array2D)  
  3. {  
  4. foreach ($array2D as $v)  
  5. {  
  6. $v = join(",",$v); //降维,也可以用implode,将一维数组转换为用逗号连接的字符串  
  7. $temp[] = $v;  
  8. }  
  9. $temp = array_unique($temp); //去掉重复的字符串,也就是重复的一维数组  
  10. foreach ($temp as $k => $v)  
  11. {  
  12. $temp[$k] = explode(",",$v); //再将拆开的数组重新组装  
  13. }  
  14. return $temp;  

如果你想保留数组的键值,可以用下面的函数: 

  1. //二维数组去掉重复值 并保留键值 
  2. function array_unique_fb($array2D)  
  3. {  
  4. foreach ($array2D as $k=>$v)  
  5. {  
  6. $v = join(",",$v); //降维,也可以用implode,将一维数组转换为用逗号连接的字符串  
  7. $temp[$k] = $v;  
  8. }  
  9. $temp = array_unique($temp); //去掉重复的字符串,也就是重复的一维数组  
  10. foreach ($temp as $k => $v)  
  11. {  
  12. $array=explode(",",$v); //再将拆开的数组重新组装  
  13. $temp2[$k]["id"] =$array[0];  
  14. $temp2[$k]["litpic"] =$array[1];  
  15. $temp2[$k]["title"] =$array[2];  
  16. $temp2[$k]["address"] =$array[3];  
  17. $temp2[$k]["starttime"] =$array[4];  
  18. $temp2[$k]["endtime"] =$array[5];  
  19. $temp2[$k]["classid"] =$array[6];  
  20. $temp2[$k]["ename"] =$array[7];  
  21. }  
  22. return $temp2;  

大概就这样啦,二维数组去重复

  1. <?php 
  2.  
  3. $arr = array(  
  4. array('id' => 1,'name' => 'aaa'),  
  5. array('id' => 2,'name' => 'bbb'),  
  6. array('id' => 3,'name' => 'ccc'),  
  7. array('id' => 4,'name' => 'ddd'),  
  8. array('id' => 5,'name' => 'ccc'),  
  9. array('id' => 6,'name' => 'aaa'),  
  10. array('id' => 7,'name' => 'bbb'),  
  11. );  
  12. function assoc_unique(&$arr$key)  
  13. {  
  14. $rAr=array();  
  15. for($i=0;$i<count($arr);$i++)  
  16. {  
  17. if(!isset($rAr[$arr[$i][$key]]))  
  18. {  
  19. $rAr[$arr[$i][$key]]=$arr[$i];  
  20. }  
  21. }  
  22. $arr=array_values($rAr);  
  23. }  
  24. assoc_unique(&$arr,'name');  
  25. print_r($arr);  
  26. ?> 

利用php自带函数,说明

array array_unique ( array $array )

array_unique() 接受 array 作为输入并返回没有重复值的新数组。

注意键名保留不变。array_unique() 先将值作为字符串排序,然后对每个值只保留第一个遇到的键名,接着忽略所有后面的键名。这并不意味着在未排序的 array 中同一个值的第一个出现的键名会被保留。

Note: 当且仅当 (string) $elem1 === (string) $elem2 时两个单元被认为相同。就是说,当字符串的表达一样时。第一个单元将被保留。

Example #1 array_unique() 例子

  1. <?php 
  2. $input = array("a" => "green""red""b" => "green""blue""red"); 
  3. $result = array_unique($input); 
  4. print_r($result); 
  5. ?> 

上例将输出:

Array
(
    [a] => green
    [0] => red
    [1] => blue
)

Example #2 array_unique() 和类型

  1. <?php 
  2. $input = array(4, "4""3", 4, 3, "3"); 
  3. $result = array_unique($input); 
  4. var_dump($result); 
  5. ?> 

上例将输出:

array(2) {
  [0] => int(4)
  [2] => string(1) "3"
}
波比源码 – 精品源码模版分享 | www.bobi11.com
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 本站源码并不保证全部能正常使用,仅供有技术基础的人学习研究,请谨慎下载
8. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!

波比源码 » 删除数组与二维数组值的php代码

41 评论

  1. purchase terazosin for sale actos tablet buy azulfidine generic

  2. order imuran generic sildenafil pill order viagra online cheap

  3. sildenafil 100mg pill viagra 50 mg order lisinopril without prescription

  4. order tadalafil 20mg online cheap otc cialis order clopidogrel 150mg pill

  5. order imitrex online cheap imitrex 25mg uk order avodart 0.5mg generic

发表评论

Hi, 如果你对这款模板有疑问,可以跟我联系哦!

联系站长
赞助VIP 享更多特权,建议使用 QQ 登录
喜欢我嘛?喜欢就按“ctrl+D”收藏我吧!♡