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
模拟OICQ的实现思路和核心程序(一)
Oct 09 PHP
php 数组排序 array_multisort与uasort的区别
Mar 24 PHP
跟我学Laravel之请求(Request)的生命周期
Oct 15 PHP
部署PHP时的4个配置修改说明
Oct 19 PHP
详解配置 Apache 服务器支持 PHP 文件的解析
Feb 15 PHP
php实现的三个常用加密解密功能函数示例
Nov 06 PHP
php实现的rc4加密解密类定义与用法示例
Aug 16 PHP
php微信公众号开发之秒杀
Oct 20 PHP
PHP+mysql实现的三级联动菜单功能示例
Feb 15 PHP
redis+php实现微博(三)微博列表功能详解
Sep 23 PHP
使用laravel根据用户类型来显示或隐藏字段
Oct 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
PHP个人网站架设连环讲(三)
2006/10/09 PHP
使用php4加速网络传输
2006/10/09 PHP
深入解析yii权限分级式访问控制的实现(非RBAC法)
2013/06/13 PHP
PHP面向对象教程之自定义类
2014/06/10 PHP
自己写的php curl库实现整站克隆功能
2015/02/12 PHP
PHP使用ActiveMQ实现消息队列的方法详解
2019/05/31 PHP
Yii 框架控制器创建使用及控制器响应操作示例
2019/10/14 PHP
使用CSS3实现字体颜色渐变的实现
2021/03/09 HTML / CSS
另类调用flash无须激活的方法
2006/12/27 Javascript
JavaScript高级程序设计 读书笔记之十 本地对象Date日期
2012/02/27 Javascript
JS多物体 任意值 链式 缓冲运动
2012/08/10 Javascript
把jquery 的dialog和ztree结合实现步骤
2013/08/02 Javascript
JavaScript的Module模式编程深入分析
2013/08/13 Javascript
借助JavaScript脚本判断浏览器Flash Player信息的方法
2014/07/09 Javascript
javascript格式化指定日期对象的方法
2015/04/21 Javascript
JS版元素周期表实现方法
2015/08/05 Javascript
JavaScript中从setTimeout与setInterval到AJAX异步
2017/02/13 Javascript
es6的数字处理的方法(5个)
2017/03/16 Javascript
jQuery实现动态添加节点与遍历节点功能示例
2017/11/09 jQuery
JS实现图片轮播效果实例详解【可自动和手动】
2019/04/04 Javascript
微信小程序点击顶部导航栏切换样式代码实例
2019/11/12 Javascript
JS实现商城秒杀倒计时功能(动态设置秒杀时间)
2019/12/12 Javascript
Python 文件管理实例详解
2015/11/10 Python
Eclipse和PyDev搭建完美Python开发环境教程(Windows篇)
2016/11/16 Python
Python 批量合并多个txt文件的实例讲解
2018/05/08 Python
cmd运行python文件时对结果进行保存的方法
2018/05/16 Python
用Python逐行分析文件方法
2019/01/28 Python
Pandas中Series和DataFrame的索引实现
2019/06/27 Python
德国著名廉价网上药店:Shop-Apotheke
2017/07/23 全球购物
机电一体化专业推荐信
2013/12/03 职场文书
如何撰写岗位职责
2014/02/01 职场文书
高一学生期末评语
2014/04/25 职场文书
2014大学生党员评议个人总结
2014/09/22 职场文书
邀请函的格式
2015/01/30 职场文书
小学生红领巾广播稿
2015/08/19 职场文书
《一面五星红旗》教学反思
2016/02/23 职场文书