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 - Html Transfer Code
Oct 09 PHP
PHP下通过系统信号量加锁方式获取递增序列ID
Sep 25 PHP
php抓取页面与代码解析 推荐
Jul 23 PHP
php json_encode奇怪问题说明
Sep 27 PHP
使用php get_headers 判断URL是否有效的解决办法
Apr 27 PHP
深入理解PHP中的Session和Cookie
Jun 21 PHP
PHP采集类Snoopy抓取图片实例
Jun 19 PHP
PHP学习笔记(二) 了解PHP的基本语法以及目录结构
Aug 04 PHP
PHP判断网络文件是否存在的方法
Mar 12 PHP
Laravel 5框架学习之向视图传送数据
Apr 08 PHP
php注册和登录界面的实现案例(推荐)
Oct 24 PHP
yii2安装详细流程
May 23 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中base64_decode与base64_encode加密解密函数实例
2014/11/24 PHP
Windows7下的php环境配置教程
2015/02/28 PHP
JS类库Bindows1.3中的内存释放方式分析
2007/03/08 Javascript
事件冒泡是什么如何用jquery阻止事件冒泡
2013/03/20 Javascript
javascript自动改变文字大小和颜色的效果的小例子
2013/08/02 Javascript
JS如何将UTC格式时间转本地格式
2013/09/04 Javascript
jQuery setTimeout传递字符串参数报错的解决方法
2014/06/09 Javascript
js调试系列 控制台命令行API使用方法
2014/06/18 Javascript
Javascript限制网页只能在微信内置浏览器中访问
2014/11/09 Javascript
JSON字符串和对象之间的转换详解
2015/05/26 Javascript
在Javascript中处理字符串之big()方法的使用
2015/06/08 Javascript
快速掌握WordPress中加载JavaScript脚本的方法
2015/12/17 Javascript
原生javascript实现addClass,removeClass,hasClass函数
2016/02/25 Javascript
基于jQuery实现弹幕APP
2017/02/10 Javascript
利用angularjs1.4制作的简易滑动门效果
2017/02/28 Javascript
Vue中计算属性computed的示例解读
2017/07/26 Javascript
jQuery实现的简单前端搜索功能示例
2017/10/28 jQuery
详解vue.js数据传递以及数据分发slot
2018/01/20 Javascript
Webpack4 使用Babel处理ES6语法的方法示例
2019/03/07 Javascript
vue实现鼠标移过出现下拉二级菜单功能
2019/12/12 Javascript
[38:38]完美世界DOTA2联赛PWL S3 access vs Rebirth 第二场 12.17
2020/12/18 DOTA
python实现爬取千万淘宝商品的方法
2015/06/30 Python
Python读取csv文件分隔符设置方法
2019/01/14 Python
Matplotlib使用Cursor实现UI定位的示例代码
2020/03/12 Python
jupyter notebook 调用环境中的Keras或者pytorch教程
2020/04/14 Python
Python APScheduler执行使用方法详解
2020/12/10 Python
python利用后缀表达式实现计算器功能
2021/02/22 Python
CSS3盒子模型详解
2013/04/24 HTML / CSS
联想哥伦比亚网上商城:Lenovo Colombia
2017/01/10 全球购物
佳能法国商店:Canon法国
2019/02/14 全球购物
工作决心书范文
2014/03/11 职场文书
设计师求职信模板
2014/05/06 职场文书
公开承诺书格式
2014/05/21 职场文书
销售员工作检讨书(推荐篇)
2014/10/18 职场文书
2015年国庆放假通知范文
2015/08/18 职场文书
2016八一建军节慰问信
2015/11/30 职场文书