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
PHP简介
Oct 09 PHP
兼容firefox,chrome的网页灰度效果
Aug 08 PHP
PHP采用XML-RPC构造Web Service实例教程
Jul 16 PHP
php中FTP函数ftp_connect、ftp_login与ftp_chmod用法
Nov 18 PHP
php中mysql操作buffer用法详解
Mar 19 PHP
MacOS 安装 PHP的图片裁剪扩展Tclip
Mar 25 PHP
php脚本运行时的超时机制详解
Feb 17 PHP
php错误日志简单配置方法
Jul 11 PHP
阿里云PHP SMS短信服务验证码发送方法
Jul 11 PHP
Laravel自动生成UUID,从建表到使用详解
Oct 24 PHP
基于thinkphp5框架实现微信小程序支付 退款 订单查询 退款查询操作
Aug 17 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
linux php mysql数据库备份实现代码
2009/03/10 PHP
PHP 远程关机实现代码
2009/11/10 PHP
DEDE采集大师官方留后门的删除办法
2011/01/08 PHP
关于PHPDocument 代码注释规范的总结
2013/06/25 PHP
thinkphp的CURD和查询方式介绍
2013/12/19 PHP
10个实用的脚本代码工具
2010/05/04 Javascript
百度地图自定义控件分享
2015/03/04 Javascript
JavaScript之AOP编程实例
2015/07/17 Javascript
理解jquery事件冒泡
2016/01/03 Javascript
原生JS版和jquery版实现checkbox的全选/全不选/点选/行内点选(Mr.Think)
2016/10/29 Javascript
bootstrap使用validate实现简单校验功能
2016/12/02 Javascript
jQuery+Ajax实现用户名重名实时检测
2017/06/01 jQuery
js仿微信抢红包功能
2020/09/25 Javascript
axios 封装上传文件的请求方法
2018/09/26 Javascript
小程序实现五星点评效果
2018/11/03 Javascript
js中对象与对象创建方法的各种方法
2019/02/27 Javascript
详解webpack的文件监听实现(热更新)
2020/09/11 Javascript
[02:50]2014DOTA2 TI预选赛预选赛 大神专访第一弹!
2014/05/21 DOTA
python 从远程服务器下载日志文件的程序
2013/02/10 Python
Python编程中的for循环语句学习教程
2015/10/14 Python
python使用fcntl模块实现程序加锁功能示例
2017/06/23 Python
关于Python如何避免循环导入问题详解
2017/09/14 Python
Python学习之路之pycharm的第一个项目搭建过程
2020/06/18 Python
详解Python模块化编程与装饰器
2021/01/16 Python
以实惠的价格提供高品质的时尚:Newchic
2018/01/18 全球购物
澳洲女装时尚在线:Blue Bungalow
2018/05/05 全球购物
施华洛世奇匈牙利官网:SWAROVSKI匈牙利
2019/07/06 全球购物
什么叫做SQL注入,如何防止
2016/10/04 面试题
工业设计专业推荐信
2013/10/29 职场文书
生物科学专业个人求职信范文
2013/12/05 职场文书
精彩的广告词
2014/03/19 职场文书
群众路线教育实践活动自我剖析思想汇报
2014/10/04 职场文书
2014年少先队工作总结
2014/12/03 职场文书
安全承诺书格式范本
2015/04/28 职场文书
2016年党支部公开承诺书
2016/03/25 职场文书
iOS 16进一步确认,一共支持16款iPhone
2022/04/28 数码科技