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 相关文章推荐
如何使用PHP往windows中添加用户
Dec 06 PHP
PHP入门速成教程
Mar 19 PHP
PHP更新购物车数量(表单部分/PHP处理部分)
May 03 PHP
php页面防重复提交方法总结
Nov 25 PHP
php全角字符转换为半角函数
Feb 07 PHP
自编函数解决pathinfo()函数处理中文问题
Nov 03 PHP
php使用google地图应用实例
Dec 31 PHP
WordPress迁移时一些常见问题的解决方法整理
Nov 24 PHP
PHP分页初探 一个最简单的PHP分页代码的简单实现
Jun 21 PHP
php usort 使用用户自定义的比较函数对二维数组中的值进行排序
May 02 PHP
Laravel如何使用Redis共享Session
Feb 23 PHP
PHP7 参数处理机制修改
Mar 09 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
利用php+mysql来做一个功能强大的在线计算器
2010/10/12 PHP
php ckeditor上传图片文件名乱码解决方法
2013/11/15 PHP
php中file_get_contents与curl性能比较分析
2014/11/08 PHP
Codeigniter检测表单post数据的方法
2015/03/21 PHP
PHP数组编码gbk与utf8互相转换的两种方法
2016/09/01 PHP
Ajax+PHP实现的分类列表框功能示例
2019/02/11 PHP
IE 条件注释详解总结(附实例代码)
2009/08/29 Javascript
jQuery 使用手册(六)
2009/09/23 Javascript
jquery 批量上传图片实现代码
2010/01/28 Javascript
jquery等宽输出文字插件使用介绍
2013/09/18 Javascript
IE6 hack for js 集锦
2014/09/23 Javascript
使用Raygun对Node.js应用进行错误处理的方法
2015/06/23 Javascript
AngularJS基础 ng-class-odd 指令示例
2016/08/01 Javascript
jquery 动态合并单元格的实现方法
2016/08/26 Javascript
利用原生js实现html5小游戏之打砖块(附源码)
2018/01/03 Javascript
jQuery实现为动态添加的元素绑定事件实例分析
2018/09/07 jQuery
使用weixin-java-tools完成微信授权登录、微信支付的示例
2018/09/26 Javascript
vue项目从node8.x升级到12.x后的问题解决
2019/10/25 Javascript
创建nuxt.js项目流程图解
2020/03/13 Javascript
Taro小程序自定义顶部导航栏功能的实现
2020/12/17 Javascript
编写Python爬虫抓取豆瓣电影TOP100及用户头像的方法
2016/01/20 Python
TensorFlow 模型载入方法汇总(小结)
2018/06/19 Python
django ajax发送post请求的两种方法
2020/01/05 Python
卸载tensorflow-cpu重装tensorflow-gpu操作
2020/06/23 Python
Python3利用scapy局域网实现自动多线程arp扫描功能
2021/01/21 Python
使用CSS3制作一个简单的Chrome模拟器
2015/07/15 HTML / CSS
HTML5视频播放插件 video.js介绍
2018/09/29 HTML / CSS
介绍下Java中==和equals的区别
2013/09/01 面试题
自动化专业本科毕业生求职信
2013/10/20 职场文书
企业宣传工作方案
2014/06/02 职场文书
《我爱祖国》演讲稿1000字
2014/09/26 职场文书
单位工作证明
2014/10/07 职场文书
庆祝三八妇女节标语
2014/10/09 职场文书
少先队入队仪式主持词
2015/07/04 职场文书
Python数据类型最全知识总结
2021/05/31 Python
Redis缓存-序列化对象存储乱码问题的解决
2021/06/21 Redis