php二维数组去重


前言:php一维数组去重很简单,直接array_unique($arr)即可,但是二维数组去重就得自己去写了

二维数组去重方法:

/*
* 二维数组去重
* 注意:二维数组中的元素个数必须一致,且键值也得一致,否则无意义
* @param array $arr
* @return array $arr_after
*/
public function array_unique_2DArr($arr=array()){
if(empty($arr) || !is_array($arr)){
return array();
}
/*******处理二维数组个数不一致问题 start 其他项目用可以去掉*******/
//判断数组中二维数组是否包含uniqueId,存在的话需要处理其他的日志信息,全部加上uniqueId,且uniqueId值必须相同
$hasUniqueId = false;
foreach($arr as $val){
if(array_key_exists('uniqueId', $val)){
$hasUniqueId = true;
break;
}
}
//如果$arr中的二维数组中uniqueId存在,则其他也增加
if($hasUniqueId){
foreach($arr as $_k=>$_val){
if(!array_key_exists('uniqueId', $_val)){
//在$_val中增加unique,只是为了和其他的带有uniqueId键值的数组元素个数保持一致
$_val_keys = array_keys($_val);
$_val_vals = array_values($_val);
array_unshift($_val_keys, 'uniqueId');
array_unshift($_val_vals, '0_0');
$arr[$_k] = array_combine($_val_keys, $_val_vals);
}
}
}
/********处理二维数组个数不一致问题 end********/
foreach($arr[0] as $k => $v){
$arr_inner_key[]= $k; //先把二维数组中的内层数组的键值记录在在一维数组中
}
foreach ($arr as $k => $v){
$v =join("^",$v); //降维 用implode()也行 ,注意,拆分时不能用逗号,用其他的不常用符号,逗号可能会由于数据本身含有逗号导致失败
$temp[$k] =$v; //保留原来的键值
}
$temp =array_unique($temp); //去重:去掉重复的字符串
foreach ($temp as $k => $v){
$a = explode("^",$v); //拆分后的重组
$arr_after[$k]= array_combine($arr_inner_key,$a); //将原来的键与值重新合并
}
return $arr_after;
}

php二维数组去重的更多相关文章

  1. PHP二维数组去重(指定键名)

    本例对二维数组中某个指定键名进行去重,发现网上大多使用array_unique或是foreach遍历等方式去重,效果不佳且较为繁琐. 本文以二维数组去重为引,介绍array_column函数的三种用法 ...

  2. VB6 二维数组去重实现

    关于VB6的二维数组去重算法实现 当然,这里还是有局限性,当我们的数组被填满了各个不同的值时,例如下方 700*700 = 490000 就要While49万次,这谁受得了? 所以以下仅适合小规模使用 ...

  3. 如何使用python将二维数组去重呢?

    二维数组的去重,能和一维的方法类似吗?import numpyc=np.array(((1,2),(3,4),(5,6),(7,8),(7,8),(3,4),(1,2)))print('二维数组:\n ...

  4. np.unique()对一维和二维数组去重

    numpy.unique(ar, return_index=False, return_inverse=False, return_counts=False, axis=None)[source] 一 ...

  5. PHP 二维数组去重(保留各个键值的同时去除重复的项)

    对于如下二维数组,要求对其进行去重: $arr = array( '=>array( 'name'=>'james', , ), '=>array( 'name'=>'susu ...

  6. PHP 二维数组去重方法

    php二维数组的去重策略,如果需要根据某字段去重(其他字段可能不一致),那么需要使用循环策略,如果去重的都是相同的(字段,值),那么可以用序列化方式. $allComments = array_map ...

  7. PHP使用array_unique对二维数组去重处理

    去重,点这里,东西是好东西,就是有点懒.莫见怪

  8. php 一行代码解决二维数组去重

    array_unique($array, SORT_REGULAR);

  9. php 二维数组去重

    function remove_duplicate($array){ $result=array(); foreach ($array as $key => $value) { $has = f ...

随机推荐

  1. PowerShell 连接远程服务器

    >>服务端Enable-PSRemoting winrm quickconfig ————这个可能不需要 >>客户端Set-Item wsman:\localhost\Clie ...

  2. js禁止鼠标右键功能

    1.禁止指定元素 document.getElementById("active-intro").oncontextmenu = function () { event.retur ...

  3. ElasticSearch实战-编码实践

    1.概述 前面在<ElasticSearch实战-入门>中给大家分享如何搭建这样一个集群,在完成集群的搭建后,今天给大家分享如何实现对应的业务功能模块,下面是今天的分享内容,目录如下所示: ...

  4. Spring Boot 解决方案 - 配置

    习惯优于配置 Spring Boot 项目的重要思想就是"习惯优于配置",这也是为什么该项目诞生的原因,让开发者免于 Spring 生态中各种项目的配置.尽管如此,但项目中完全零配 ...

  5. 无法启动MYSQL服务”1067 进程意外终止”解决的方法

    自己一開始依照百度经验里的方法——<MySQL下载安装.配置与使用(win7x64)>去安装和配置,可是到后面步骤总是出现1067代号的错误. 慢慢折腾去解决. 这里汇总各种导致mysql ...

  6. Asp.net webform scaffolding结合Generic Unit of Work & (Extensible) Repositories Framework代码生成向导

    Asp.net webform scaffolding结合Generic Unit of Work & (Extensible) Repositories Framework代码生成向导 在上 ...

  7. Django之模型层(单表操作)

    一.ORM简介 MVC和MTV框架中包含一个重要部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库. ORM是‘对象-关系- ...

  8. Oracle字符串函数

    Oracle字符串函数 平常我们用Oracle主要有两种字符串类型1.char始终为固定的长度,如果设置了长度小于char列的值,则Oracle会自动用空格填充的.当比较char时,Oracle用空格 ...

  9. ppt提取文字

    ALT+F11调出开发窗口 加入引用 插入模块 输入代码运行 Sub Main() On Error Resume Next Dim temp As New Word.Document, tmpSha ...

  10. matlab中syms与sym有什么区别

    syms x y %就是定了符号变量x y以后x y就可以直接使用了,有他们运算出来的结果也是符号变量 当然上面的也可以x=sym('x'),y=sym('y') sys('a+b')%就是将a+b转 ...