PHP多维数组去重
- 自己写了一个实现多维数组去重的方法, 只是实现了功能, 至于性能没多管~ 可以保留key, 这个方法是针对最终的一维数组元素去重, 如果是多维数组的两个子元素是相同的数组, 是不能去重的
protected function arrayUnique($arr)
{
$new_arr = [];
foreach ($arr as $k=>$v){
if(!is_array($v)){
//一维数组去重
if(!in_array($v, $new_arr)){
$new_arr[$k] = $v;
}
}
//多维数组的情况
if(is_array($v)){
$new_arr[$k] = $this->arrayUnique($v);
}
}
return $new_arr;
}
- array_unique 对多维数组去重
$arr[] = ['name', 'age', 'age', 'age', 'name', 'nam']; //二维数组的第一个和第二个元素完全相同, 第三个元素稍有不同, 使用array_unique去重后, 结果是第一个和第三个元素保留
$arr[] = ['name', 'age', 'age', 'age', 'name', 'nam']; //说明array_unique对多维数组去重, 必须是完全相同才会去重,
$arr[] = ['name', 'age', 'age', 'age', 'name', 'end']; //
$res = array_unique($arr, SORT_REGULAR);
print_r($res); - 根据数组值作为新数组的下标来判断是否重复, 进而去重
foreach($result as $k=>$v){
$key = $v['city'].$v['country'];
if(!array_key_exists($key, $res)){
//不存在则添加
$res[$key] = $k;
}else{
//删除result数组中重复的值
unset($result[$k]);
}
foreach($res as $k=>$v){
$new_arr[] = $result[$v];
}
}
PHP多维数组去重的更多相关文章
- PHP二维数组去重(指定键名)
本例对二维数组中某个指定键名进行去重,发现网上大多使用array_unique或是foreach遍历等方式去重,效果不佳且较为繁琐. 本文以二维数组去重为引,介绍array_column函数的三种用法 ...
- VB6 二维数组去重实现
关于VB6的二维数组去重算法实现 当然,这里还是有局限性,当我们的数组被填满了各个不同的值时,例如下方 700*700 = 490000 就要While49万次,这谁受得了? 所以以下仅适合小规模使用 ...
- php二维数组去重
php二维数组去重 前言:php一维数组去重很简单,直接array_unique($arr)即可,但是二维数组去重就得自己去写了 二维数组去重方法: /* * 二维数组去重 * 注意:二维数组中的元素 ...
- 如何使用python将二维数组去重呢?
二维数组的去重,能和一维的方法类似吗?import numpyc=np.array(((1,2),(3,4),(5,6),(7,8),(7,8),(3,4),(1,2)))print('二维数组:\n ...
- np.unique()对一维和二维数组去重
numpy.unique(ar, return_index=False, return_inverse=False, return_counts=False, axis=None)[source] 一 ...
- PHP 二维数组去重(保留各个键值的同时去除重复的项)
对于如下二维数组,要求对其进行去重: $arr = array( '=>array( 'name'=>'james', , ), '=>array( 'name'=>'susu ...
- PHP 二维数组去重方法
php二维数组的去重策略,如果需要根据某字段去重(其他字段可能不一致),那么需要使用循环策略,如果去重的都是相同的(字段,值),那么可以用序列化方式. $allComments = array_map ...
- PHP使用array_unique对二维数组去重处理
去重,点这里,东西是好东西,就是有点懒.莫见怪
- php 一行代码解决二维数组去重
array_unique($array, SORT_REGULAR);
随机推荐
- powerDesigner的建表语句默认设置为去掉双引号
powerDesigner的建表语句默认设置为去掉双引号,依次执行如下操作: Database ------>> Edit Current DBMS ------>> Scri ...
- java日期比较工具类
package com.net.util; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.ut ...
- IT 界的“名言”
--喜欢记得关注我哟[shoshana]-- 中国有很多古代警世名言,朗朗上口,凝聚了很多故事与哲理.硅谷的互联网公司里头也有一些这样的名言,凝聚了很多公司价值观和做事的方法,对于很多程序员来说,其影 ...
- SpingMVC使用小结
- HDU 1325 有根树的判断
Is It A Tree? Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total ...
- ffmpeg AVPacket结构体及其相关函数
0. 简介 AVPacket结构体并不是很复杂, 但是在ffmpeg中用的非常多. 与其相关的函数也是比较多. AVPacket保存了解复用之后, 解码之前的数据, 和这些数据相关的一些附加信息. 对 ...
- python学习-8 用户有三次机会登陆
用户登陆(三次机会) count = 0 while count < 3: user = input('请输入账号:') pwd = input('请输入密码:') ': print(" ...
- Django 在Python3.5 下报 没有模块MySQLdb
在整个项目站点下的__init__.py 文件里(即和setting.py在同一个文件下)写入以下代码: import pymysql pymysql.install_as_MySQLdb() 需要提 ...
- Angular 表单验证类库 ngx-validator 1.0 正式发布
背景介绍 之前写了一篇 <如何优雅的使用 Angular 表单验证>,结尾处介绍了统一验证反馈的类库 ngx-validator ,由于这段时间一直在新模块做微前端以及相关业务组件库, ...
- 怎样判断浏览器是否支持canvas
1. 如果网页必须使用canvas, 则需要告知用户更换或更新浏览器. 这时可以通过在<canvas>标签之间添加替代元素进行 <canvas id="c1"&g ...