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数组的使用方法小结
Sep 23 PHP
php数组函数序列之array_push() 数组尾部添加一个或多个元素(入栈),返回新长度。
Nov 07 PHP
PHP中替换换行符的几种方法小结
Oct 15 PHP
php防注入,表单提交值转义的实现详解
Jun 10 PHP
PHP整数取余返回负数的相关解决方法
May 15 PHP
getJSON跨域SyntaxError问题分析
Aug 07 PHP
PHP实现下载断点续传的方法
Nov 12 PHP
Yii使用技巧大汇总
Dec 29 PHP
PHP检测数据类型的几种方法(总结)
Mar 04 PHP
PHP+AjaxForm异步带进度条上传文件实例代码
Aug 14 PHP
基于swoole实现多人聊天室
Jun 14 PHP
ThinkPHP5分页paginate代码实例解析
Nov 10 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游戏编程25个脚本代码
2011/02/08 PHP
php 随机排序广告的实现代码
2011/05/09 PHP
Laravel 修改默认日志文件名称和位置的例子
2019/10/17 PHP
javaScript checkbox 全选/反选及批量删除
2010/04/28 Javascript
一个简单的弹性返回顶部JS代码实现介绍
2013/06/09 Javascript
js原生appendChild的bug解决心得分享
2013/07/01 Javascript
java必学必会之static关键字
2015/12/03 Javascript
Bootstrap每天必学之滚动监听
2016/03/16 Javascript
JS封装的选项卡TAB切换效果示例
2016/09/20 Javascript
JavaScript中动态向表格添加数据
2017/01/24 Javascript
BootStrap实现鼠标悬停下拉列表功能
2017/02/17 Javascript
[js高手之路]单例模式实现模态框的示例
2017/09/01 Javascript
JS实现快速比较两个字符串中包含有相同数字的方法
2017/09/11 Javascript
Node.js事件的正确使用方法
2019/04/05 Javascript
[02:14]DOTA2英雄基础教程 修补匠
2013/12/23 DOTA
[46:44]DOTA2-DPC中国联赛 正赛 Ehome vs PSG.LGD BO3 第二场 3月7日
2021/03/11 DOTA
Python 随机生成中文验证码的实例代码
2013/03/20 Python
python中对list去重的多种方法
2014/09/18 Python
python进程类subprocess的一些操作方法例子
2014/11/22 Python
Python使用poplib模块和smtplib模块收发电子邮件的教程
2016/07/02 Python
Python实现ping指定IP的示例
2018/06/04 Python
Python使用win32com模块实现数据库表结构自动生成word表格的方法
2018/07/17 Python
python爬取淘宝商品销量信息
2018/11/16 Python
python 使用turtule绘制递归图形(螺旋、二叉树、谢尔宾斯基三角形)
2019/05/30 Python
python UDP(udp)协议发送和接收的实例
2019/07/22 Python
利用python实现冒泡排序算法实例代码
2019/12/01 Python
Pytorch 保存模型生成图片方式
2020/01/10 Python
python实现跨excel sheet复制代码实例
2020/03/03 Python
移动端html5 meta标签的神奇功效
2016/01/06 HTML / CSS
会计学生自我鉴定
2014/02/06 职场文书
班级德育工作实施方案
2014/02/21 职场文书
2014年向国旗敬礼活动总结
2014/09/27 职场文书
2014年法院个人工作总结
2014/12/17 职场文书
旅游安全责任协议书
2016/03/22 职场文书
python中%格式表达式实例用法
2021/06/18 Python
Nginx隐藏式跳转(浏览器URL跳转后保持不变)
2022/04/07 Servers