php将多个值的数组去除重复元素
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/>";
?>
php将多个值的数组去除重复元素的更多相关文章
- php 去除数组中重复元素
去除数组中重复元素, 找了下可以一下两个函数 php array_flip()与array_uniqure() $arr = array(…………) ;// 假设有数组包含一万个元素,里面有重复的元素 ...
- js 两数组去除重复数值
//两数组去除重复数值 mergeArray: function(arr1, arr2) { for (var i = 0; i < arr1.length; i++) { for (var j ...
- LintCode 521.去除重复元素
LintCode 521.去除重复元素 描述 给一个整数数组,去除重复的元素. 你应该做这些事 1.在原数组上操作 2.将去除重复之后的元素放在数组的开头 3.返回去除重复元素之后的元素个数 挑战 1 ...
- JS数组去掉重复元素
JS数组去掉重复元素,这里提供3中写法. var arr =[1,2,3,4,5,6,3,4,7,2,4,1,8]; 输出:[1,2,3,4,5,6,7,8]; 1.使用indexOf() arr.i ...
- [C++]vector去除重复元素
#include <iostream> #include <vector> #include <algorithm> #include <set> us ...
- Python列表去除重复元素
主要尝试了3种列表去除重复元素 #2.去除列表中的重复元素 #set方法 def removeDuplicates_set(nums): l2 = list(set(l1)) #用l1的顺序排序l2 ...
- java集合 collection-list-ArrayList 将自定义对象作为元素存到ArrayList集合中,并去除重复元素。
import java.util.*; /* 将自定义对象作为元素存到ArrayList集合中,并去除重复元素. 比如:存人对象.同姓名同年龄,视为同一个人.为重复元素. 思路: 1,对人描述,将数据 ...
- 在angular中使用ng-repeat时数组中有重复元素,要用item in items track by $index
在angular中使用ng-repeat时数组中有重复元素,要用item in items track by $index,不然会报错 <div class="" ng-in ...
- ArrayList去除重复元素(多种方法实现)
package other; import java.util.ArrayList; import java.util.HashSet; public class test4 { public sta ...
随机推荐
- One difference between AngularJS' $location and window.location
Recenently, I encountered a problem. Client side code is: $http({ url: "/api/runtimelicense&quo ...
- jenkins发送邮件失败“No emails were triggered”
我在Jenkins邮箱配置成功,试发送也成功了以后,发现构建项目还是没有收到邮件 构建日志中提示“No emails were triggered” 检查了一下构建项目的配置,发现Editable E ...
- 在Idea2017.1中编译时发生如下的错误
错误 在Idea2017.1中编译时发生如下的错误 Information:java: javacTask: 源发行版 1.8 需要目标发行版 1.8 Information:java: Errors ...
- Python中模块的发布与安装
模块(Module) Python中有一个概念叫做模块(module),这个和C语言中的头文件以及Java中的包很类似,比如在Python中要调用sqrt函数,必须用import关键字引入math这个 ...
- *2 FastCGI sent in stderr: "PHP message: PHP Parse error: syntax error, unexpected '[' in /application/nginx-1.6.3/html/zabbix/index.php on line 32" while reading response header from upstream, clien
今天呢想学习一下zabbix监控一下我的服务情况,然后就开始安装我的zabbix服务,首先LNMP环境准备好了,Nginx版本为1.6.3,php版本为5.3.27,MySQL版本为二进制包安装的5. ...
- Linux终端回话记录和回放工具 - asciinema使用总结
目前linux终端回放工具常见的就是asciinema和script了, 这两种工具都有那种类似于视频回放的效果.虽然这样做的代价是录制过程中需要占用一定的cpu资源以及录制后可能会因为视频文件太大而 ...
- python 使用 matplotlib.pyplot来画柱状图和饼图
导入包 import matplotlib.pyplot as plt 柱状图 最简柱状图 # 显示高度 def autolabel(rects): for rect in rects: height ...
- 易错java知识点总结(持续更新)
1. 2.java转义字符的理解 参考知乎大神:http://www.zhihu.com/question/29232624 正向和逆向处理转义字符 正向:把两个字符 \ n 识别为一个转义字符 ne ...
- 并发编程之 Exchanger 源码分析
前言 JUC 包中除了 CountDownLatch, CyclicBarrier, Semaphore, 还有一个重要的工具,只不过相对而言使用的不多,什么呢? Exchange -- 交换器.用于 ...
- Docker配置阿里云加速地址
首先需要注册一个阿里云账号,只要注册账号就可以,不用充钱购买任何阿里云服务! 打开阿里云网站https://cr.console.aliyun.com,登陆自己的阿里云账号. 然后只需要在服务器配置d ...