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的网址
Nov 25 PHP
也谈php网站在线人数统计
Apr 09 PHP
php file_exists 检查文件或目录是否存在的函数
May 10 PHP
php中的三元运算符使用说明
Jul 03 PHP
PHP中return 和 exit 、break和contiue 区别与用法
Apr 09 PHP
PHP四舍五入、取整、round函数使用示例
Feb 06 PHP
php准确获取文件MIME类型的方法
Jun 17 PHP
Zend Framework框架Smarty扩展实现方法
Mar 22 PHP
[原创]php求圆周率的简单实现方法
May 30 PHP
ThinkPHP实现图片上传操作的方法详解
May 08 PHP
Yii2 队列 shmilyzxt/yii2-queue 简单概述
Aug 02 PHP
thinkphp5.1 框架导入/导出excel文件操作示例
May 25 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连接mysql数据库代码
2009/03/10 PHP
PHP编码转换
2012/11/05 PHP
基于PHPExcel的常用方法总结
2013/06/13 PHP
PHP stream_context_create()函数的使用示例
2015/05/12 PHP
使用laravel指定日志文件记录任意日志
2019/10/17 PHP
jQuery 研究心得 取得属性的值
2007/11/30 Javascript
jquery tab标签页的制作
2010/05/10 Javascript
兼容IE与firefox火狐的回车事件(js与jquery)
2010/10/20 Javascript
html文本框提示效果的示例代码
2014/06/28 Javascript
JavaScript数组随机排列实现随机洗牌功能
2015/03/19 Javascript
再次谈论React.js实现原生js拖拽效果引起的一系列问题
2016/04/03 Javascript
jqPlot jQuery绘图插件的使用
2016/06/18 Javascript
JQuery组件基于Bootstrap的DropDownList(完整版)
2016/07/05 Javascript
JavaScript获取select中text值的方法
2017/02/13 Javascript
在Vue项目中使用d3.js的实例代码
2018/05/01 Javascript
vue组件name的作用小结
2018/05/23 Javascript
Vue中props的详解
2019/05/16 Javascript
微信小程序实现音乐播放器
2019/11/20 Javascript
[01:02:53]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第二局
2016/03/06 DOTA
Python实现的一个找零钱的小程序代码分享
2014/08/25 Python
使用rst2pdf实现将sphinx生成PDF
2016/06/07 Python
CentOS6.5设置Django开发环境
2016/10/13 Python
Python定义一个跨越多行的字符串的多种方法小结
2018/07/19 Python
Python中那些 Pythonic的写法详解
2019/07/02 Python
python导入不同目录下的自定义模块过程解析
2019/11/18 Python
通过celery异步处理一个查询任务的完整代码
2019/11/19 Python
Python爬虫实例——scrapy框架爬取拉勾网招聘信息
2020/07/14 Python
父亲生日宴会答谢词
2014/01/10 职场文书
新郎婚宴答谢词
2014/01/19 职场文书
信息专业学生学习的自我评价
2014/02/17 职场文书
党员领导干部廉洁从政承诺书
2014/03/27 职场文书
2014年行政助理工作总结
2014/11/19 职场文书
综合素质自我评价评语
2015/03/06 职场文书
家长对学校的意见和建议
2015/06/03 职场文书
邹越演讲观后感
2015/06/15 职场文书
分析并发编程之LongAdder原理
2021/06/29 Java/Android