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 相关文章推荐
echo, print, printf 和 sprintf 区别
Dec 06 PHP
PHP文件上传实例详解!!!
Jan 02 PHP
php.ini中date.timezone设置分析
Jul 29 PHP
php获取URL中带#号等特殊符号参数的解决方法
Sep 02 PHP
php中explode的负数limit用法分析
Feb 27 PHP
Zend Framework框架之Zend_Mail实现发送Email邮件验证功能及解决标题乱码的方法
Mar 21 PHP
Zend Studio使用技巧两则
Apr 01 PHP
PHP使用curl函数发送Post请求的注意事项
Nov 26 PHP
探究Laravel使用env函数读取环境变量为null的问题
Dec 06 PHP
PHP网页安全认证的实例详解
Sep 28 PHP
PHP读取并输出XML文件数据的简单实现方法
Dec 22 PHP
PHP大文件切割上传并带进度条功能示例
Jul 01 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 cookie 登录验证示例代码
2009/03/16 PHP
PHP 模拟登陆MSN并获得用户信息
2009/05/16 PHP
探讨PHP使用eAccelerator的API开发详解
2013/06/09 PHP
Apache连接PHP后无法启动问题解决思路
2015/06/18 PHP
js模拟select下拉菜单控件的代码
2013/05/08 Javascript
js获取网页可见区域、正文以及屏幕分辨率的高度
2014/05/15 Javascript
JQuery选中checkbox方法代码实例(全选、反选、全不选)
2015/04/27 Javascript
jQuery实现验证年龄简单思路
2016/02/24 Javascript
Bootstrap 附加导航(Affix)插件实例详解
2016/06/01 Javascript
Vue.js每天必学之过渡与动画
2016/09/06 Javascript
原生js图片轮播效果实现代码
2016/10/19 Javascript
Vue.js实现输入框绑定的实例代码
2017/08/24 Javascript
react-native组件中NavigatorIOS和ListView结合使用的方法
2017/09/30 Javascript
React组件内事件传参实现tab切换的示例代码
2018/07/04 Javascript
Next.js项目实战踩坑指南(笔记)
2018/11/29 Javascript
JS拖动选择table里的单元格完整实例【基于jQuery】
2019/05/28 jQuery
bootstrap Table实现合并相同行
2019/07/19 Javascript
JavaScrip如果基于url实现图片下载
2020/07/03 Javascript
[01:06:30]DOTA2-DPC中国联赛定级赛 Phoenix vs DLG BO3第二场 1月9日
2021/03/11 DOTA
Python线性回归实战分析
2018/02/01 Python
一篇文章读懂Python赋值与拷贝
2018/04/19 Python
详解python多线程、锁、event事件机制的简单使用
2018/04/27 Python
详解Python Opencv和PIL读取图像文件的差别
2019/12/27 Python
打包PyQt5应用时的注意事项
2020/02/14 Python
UI自动化定位常用实现方法代码示例
2020/10/27 Python
Ubuntu20.04环境安装tensorflow2的方法步骤
2021/01/29 Python
Html5 canvas画图白板踩坑
2020/06/01 HTML / CSS
Michael Kors美国官网:美式奢侈生活风格的代表
2016/11/25 全球购物
小学教师管理制度
2014/01/18 职场文书
政府门卫岗位职责
2014/04/29 职场文书
供电工程专业求职信
2014/08/09 职场文书
公司向个人借款协议书范本
2014/10/09 职场文书
关于调整工作时间的通知
2015/04/24 职场文书
2015年安全生产月工作总结
2015/07/27 职场文书
师德师风培训感言
2015/08/03 职场文书
教你使用一行Python代码玩遍童年的小游戏
2021/08/23 Python