php将多个值的数组去除重复元素
2018-06-22 05:16:06来源:未知 阅读 ()
array_unique(array) 只能处理value只有单个的数组。
去除有多个value数组,可以使用如下函数实现:
function more_array_unique($arr=array()){ foreach($arr[0] as $k => $v){ $arr_inner_key[]= $k; //先把二维数组中的内层数组的键值记录在在一维数组中 } foreach ($arr as $k => $v){ $v =join(",",$v); //降维 用implode()也行 $temp[$k] =$v; //保留原来的键值 $temp[]即为不保留原来键值 } $temp =array_unique($temp); //去重:去掉重复的字符串 foreach ($temp as $k => $v){ $a = explode(",",$v); //拆分后的重组 如:Array( [0] => james [1] => 30 ) $arr_after[$k]= array_combine($arr_inner_key,$a); //将原来的键与值重新合并 } return $arr_after; }
有如下数组:
$arr = array( '0'=>array( 'name'=>'james', 'age'=>30, ), '1'=>array( 'name'=>'susu', 'age'=>26, ), '2'=>array( 'name'=>'james', 'age'=>30, ), 'new'=>array( 'name'=>'kube', 'age'=>37, ), 'list'=>array( 'name'=>'kube', 'age'=>27, ), '435'=>array( 'name'=>'susu', 'age'=>26, ), '33'=>array( 'name'=>'james', 'age'=>30, ), );
调用函数后显示:
Array
(
[0] => Array
(
[name] => james
[age] => 30
)
[1] => Array
(
[name] => susu
[age] => 26
)
[new] => Array
(
[name] => kube
[age] => 37
)
[list] => Array
(
[name] => kube
[age] => 27
)
)
测试Demo如下:
<?php $arr = array( '0'=>array( 'name'=>'james', 'age'=>30, ), '1'=>array( 'name'=>'susu', 'age'=>26, ), '2'=>array( 'name'=>'james', 'age'=>30, ), 'new'=>array( 'name'=>'kube', 'age'=>37, ), 'list'=>array( 'name'=>'kube', 'age'=>27, ), '435'=>array( 'name'=>'susu', 'age'=>26, ), '33'=>array( 'name'=>'james', 'age'=>30, ), ); printf("原来的数组:<br><pre>"); //输出原来的数组 print_r($arr); echo "</pre><br/>"; function more_array_unique($arr=array()){ foreach($arr[0] as $k => $v){ $arr_inner_key[]= $k; //先把二维数组中的内层数组的键值记录在在一维数组中 } foreach ($arr as $k => $v){ $v =join(",",$v); //降维 用implode()也行 $temp[$k] =$v; //保留原来的键值 $temp[]即为不保留原来键值 } $temp =array_unique($temp); //去重:去掉重复的字符串 foreach ($temp as $k => $v){ $a = explode(",",$v); //拆分后的重组 如:Array( [0] => james [1] => 30 ) $arr_after[$k]= array_combine($arr_inner_key,$a); //将原来的键与值重新合并 } return $arr_after; } $arr_new = more_array_unique($arr); //调用去重函数 printf("去除重复元素后的数组:<br>"); echo '<pre>'; print_r($arr_new); echo "</pre><br/>"; ?>
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:单例模式
- PHP写UltraEdit插件脚本实现方法 2020-03-29
- php 带逗号千位符数字的处理方法 2020-03-28
- PHP三元运算符的结合性介绍 2020-03-28
- PHP静态延迟绑定和普通静态效率的对比 2020-03-28
- 基于php流程控制语句和循环控制语句 2020-03-28
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash