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 相关文章推荐
使用 eAccelerator加速PHP代码的目的
Mar 16 PHP
Cannot modify header information错误解决方法
Oct 08 PHP
php调用MySQL存储过程的方法集合(推荐)
Jul 03 PHP
PHP打开和关闭文件操作函数总结
Nov 18 PHP
用php来限制每个ip每天浏览页面数量的实现思路
Feb 24 PHP
利用PHP将部分内容用星号替换
Apr 21 PHP
CodeIgniter分页类pagination使用方法示例
Mar 28 PHP
WordPress中设置Post Type自定义文章类型的实例教程
May 10 PHP
PHP Header用于页面跳转时的几个注意事项
Oct 21 PHP
PHP将字符串首字母大小写转换的实例
Jan 21 PHP
PHP实现登录验证码校验功能
May 17 PHP
CodeIgniter框架实现的整合Smarty引擎DEMO示例
Mar 28 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
操作Oracle的php类
2006/10/09 PHP
php获取url参数方法总结
2014/11/13 PHP
php输出xml属性的方法
2015/03/19 PHP
PHP如何实现Unicode和Utf-8编码相互转换
2015/07/29 PHP
浅谈PHP的数据库接口和技术
2016/12/09 PHP
PHP编程实现csv文件导入mysql数据库的方法
2017/04/29 PHP
laravel框架中表单请求类型和CSRF防护实例分析
2019/11/23 PHP
学习YUI.Ext 第六天--关于树TreePanel(Part 1)
2007/03/10 Javascript
jQuery动态地获取系统时间实现代码
2013/05/24 Javascript
简单选项卡 js和jquery制作方法分享
2014/02/26 Javascript
原生js获取left值和top值的三种方法
2017/08/02 Javascript
koa-passport实现本地验证的方法示例
2020/02/20 Javascript
js实现mp3录音通过websocket实时传送+简易波形图效果
2020/06/12 Javascript
python实现定制交互式命令行的方法
2014/07/03 Python
举例讲解Python中的身份运算符的使用方法
2015/10/13 Python
100行Python代码实现自动抢火车票(附源码)
2018/01/11 Python
使用 Visual Studio Code(VSCode)搭建简单的Python+Django开发环境的方法步骤
2018/12/17 Python
详解用python生成随机数的几种方法
2019/08/04 Python
Python编程快速上手——正则表达式查找功能案例分析
2020/02/28 Python
宝塔面板成功部署Django项目流程(图文)
2020/06/22 Python
Python如何设置指定窗口为前台活动窗口
2020/08/12 Python
python如何用matplotlib创建三维图表
2021/01/26 Python
CSS3 icon font完全指南(CSS3 font 会取代icon图标)
2013/01/06 HTML / CSS
如何将整数int转换成字串String
2014/03/21 面试题
你所在的项目是如何确定版本号的
2015/12/28 面试题
师范生实习自我鉴定
2013/11/01 职场文书
知识改变命运演讲稿
2014/05/21 职场文书
清洁工个人工作总结
2015/03/05 职场文书
项目技术负责人岗位职责
2015/04/13 职场文书
股东大会通知
2015/04/24 职场文书
小学生节水倡议书
2015/04/29 职场文书
2016寒假社会实践心得体会范文
2015/10/09 职场文书
小学毕业教师寄语
2019/06/21 职场文书
使用Redis实现秒杀功能的简单方法
2021/05/08 Redis
Pytorch distributed 多卡并行载入模型操作
2021/06/05 Python
postgresql无序uuid性能测试及对数据库的影响
2021/06/11 PostgreSQL