php删除数组中重复元素的方法


Posted in PHP onDecember 22, 2015

几种php删除数组元素方法在很多情况下我们的数组会出现重复情况,那我们删除数组中一些重复的内容怎么办,这些元素必须保持他唯一,所以就想办法来删除它们,下面利用了遍历查询来删除重复数组元素的几种方法。
方法一、完整删除重复数组实例-----删除数组中的一个元素

function array_remove_value(&$arr, $var){
foreach ($arr as $key => $value) {
if (is_array($value)) {
array_remove_value($arr[$key], $var);
} else {
$value = trim($value);
if ($value == $var) {
unset($arr[$key]);
} else {
$arr[$key] = $value;
}
}
}
}

$a是一个数组:

count($a); //得到4
unset($a[1]); //删除第二个元素
count($a); //得到3
echo $a[2]; //数组中仅有三个元素,本想得到最后一个元素,但却得到blue,
echo $a[1]; //无值
?>

也就是说在删除数组中的元素后,数组中的元素个数(用count()得到)变了,但数组下标却没有重新排列,还必须用删除数组前的key来操作相应的值。
后来我采用另一种方法,其实根本就不叫"方法",是用php4现成的函数array_splice()

count ($a); //得到4
array_splice($a,1,1); //删除第二个元素
count ($a); //得到3
echo $a[2]; //得到yellow
echo $a[1]; //得到blue
?>

方法二、删除数组中重复元素的函数

function delmember(&$array, $id)
{
$size = count($array);
for($i = 0; $i <$size - $id - 1; $i ++)
{
$array[$id + $i] = $array[$id + $i + 1];
}
unset($array[$size - 1]);
}

补充小例子:

方法一、php有内置函数array_unique可以用来删除数组中的重复值

  • array_unique -- 移除数组中重复的值
  • array_unique说明
  • array array_unique ( array array )
  • array_unique() 接受 array 作为输入并返回没有重复值的新数组

注意键名保留不变。array_unique() 先将值作为字符串排序,然后对每个值只保留第一个遇到的键名,接着忽略所有后面的键名。这并不意味着在未排序的 array 中同一个值的第一个出现的键名会被保留。
注: 当且仅当 (string) $elem1 === (string) $elem2 时两个单元被认为相同。就是说,当字符串的表达一样时。
第一个单元将被保留。
例子:array_unique()

<?php
$input = array("a" => "green", "red", "b" => "green", "blue", "red");
$result = array_unique($input);
print_r($result);
?>

上例将输出:

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

方法二、array_flip实现去重效果

另一个方法是使用php的array_flip函数来间接的实现去重效果
array_flip是反转数组键和值的函数,它有个特性就是如果数组中有二个值是一样的,那么反转后会保留最后一个键和值,利用这个特性我们用他来间接的实现数组的去重.

<?php
$arr = array("a"=>"a1","b"=>'b1',"c"=>"a2","d"=>"a1");
$arr1 = array_flip($arr);
print_r($arr1);//先反转一次,去掉重复值,输出Array ( [a1] => d [b1] => b [a2] => c )
$arr2 = array_flip($arr);
print_r($arr2);//再反转回来,得到去重后的数组,输出Array ( [a1] => d [b1] => b [a2] => c )
$arr3 = array_unique($arr);
print_r($arr3);//利用php的array_unique函数去重,输出Array ( [a] => a1 [b] => b1 [c] => a2 )
?>

二种方法不同的是用array_flip得到的是重复元素最后的键和值,用array_unique得到的是二个重复元素第一个键和值。

希望本文所述对大家学习php程序设计有所帮助,解决数组重复元素问题。

PHP 相关文章推荐
将数字格式的计算结果转为汉字格式
Oct 09 PHP
PHPLog php 程序调试追踪工具
Sep 09 PHP
phplock(php进程锁) v1.0 beta1
Nov 24 PHP
php中定时计划任务的实现原理
Jan 08 PHP
简单谈谈PHP中strlen 函数
Feb 27 PHP
php自动加载方式集合
Apr 04 PHP
jquery+thinkphp实现跨域抓取数据的方法
Oct 15 PHP
php制作圆形用户头像的实例_自定义封装类源代码
Sep 18 PHP
PHP使用星号替代用户名手机和邮箱的实现代码
Feb 07 PHP
php获取微信openid方法总结
Oct 10 PHP
PHP获取真实IP及IP模拟方法解析
Nov 24 PHP
php中yii框架实例用法
Dec 22 PHP
yii2.0实现验证用户名与邮箱功能
Dec 22 #PHP
PHP内核探索之解释器的执行过程
Dec 22 #PHP
PHP内核探索之变量
Dec 22 #PHP
yii2.0使用Plupload实现带缩放功能的多图上传
Dec 22 #PHP
PHP输入流php://input实例讲解
Dec 22 #PHP
服务器迁移php版本不同可能诱发的问题
Dec 22 #PHP
php上传图片并压缩的实现方法
Dec 22 #PHP
You might like
新闻分类录入、显示系统
2006/10/09 PHP
Codeigniter购物车类不能添加中文的解决方法
2014/11/29 PHP
Laravel框架模板继承操作示例
2018/06/11 PHP
简易js代码实现计算器操作
2013/04/15 Javascript
js怎么终止程序return不行换jfslk
2013/05/30 Javascript
js局部刷新页面时间具体实现
2013/07/04 Javascript
js 实现菜单左右滚动显示示例介绍
2013/11/21 Javascript
jquery查找父元素、子元素(个人经验总结)
2014/04/09 Javascript
JavaScript模板引擎用法实例
2015/07/10 Javascript
浅谈JavaScript对象与继承
2016/07/10 Javascript
详解Javascript获取缓存和清除缓存API
2017/05/25 Javascript
JavaScript数组_动力节点Java学院整理
2017/06/26 Javascript
jQuery 实现批量提交表格多行数据的方法
2018/08/09 jQuery
JS 实现微信扫一扫功能
2018/09/14 Javascript
详解从react转职到vue开发的项目准备
2019/01/14 Javascript
微信小程序订阅消息(java后端实现)开发
2020/06/01 Javascript
Python中IPYTHON入门实例
2015/05/11 Python
Python编程中使用Pillow来处理图像的基础教程
2015/11/20 Python
玩转python爬虫之cookie使用方法
2016/02/17 Python
Python实现的插入排序算法原理与用法实例分析
2017/11/22 Python
在scrapy中使用phantomJS实现异步爬取的方法
2018/12/17 Python
Django框架模板注入操作示例【变量传递到模板】
2018/12/19 Python
浅谈python图片处理Image和skimage的区别
2019/08/04 Python
Pandas实现dataframe和np.array的相互转换
2019/11/30 Python
利用pyshp包给shapefile文件添加字段的实例
2019/12/06 Python
html5+css3实现一款注册表单实例
2013/04/17 HTML / CSS
印度排名第一的蛋糕、鲜花和礼品送货:Winni
2019/08/02 全球购物
输入一行文字,找出其中大写字母、小写字母、空格、数字、及其他字符各有多少
2016/04/15 面试题
在校学生职业规划范文
2014/01/08 职场文书
我们的节日清明节活动方案
2014/03/05 职场文书
灰雀教学反思
2014/04/28 职场文书
婚前协议书范本
2014/10/27 职场文书
学校领导班子成员查摆问题及整改措施
2014/10/28 职场文书
运动会表扬稿范文
2015/05/05 职场文书
《金色的草地》教学反思
2016/02/17 职场文书
Python实现仓库管理系统
2022/05/30 Python