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
php AJAX实例根据邮编自动完成地址信息
Nov 23 PHP
定义php常量的详解
Jun 09 PHP
在wamp集成环境下升级php版本(实现方法)
Jul 01 PHP
11个PHPer必须要了解的编程规范
Sep 22 PHP
php字符串分割函数用法实例
Mar 17 PHP
PHP简单的MVC框架实现方法
Dec 01 PHP
php微信开发之批量生成带参数的二维码
Jun 26 PHP
php 数组处理函数extract详解及实例代码
Nov 23 PHP
PHP get_html_translation_table()函数用法讲解
Feb 16 PHP
Laravel5.7 数据库操作迁移的实现方法
Apr 12 PHP
浅谈Laravel中的三种中间件的作用
Oct 13 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
destoon调用自定义模板及样式的公告栏
2014/06/21 PHP
推荐十款免费 WordPress 插件
2015/03/24 PHP
JS 巧妙获取剪贴板数据 Excel数据的粘贴
2009/07/09 Javascript
jquery tools之tabs 选项卡/页签
2009/07/25 Javascript
innerHTML属性,outerHTML属性,textContent属性,innerText属性区别详解
2015/03/13 Javascript
JS定义网页表单提交(submit)的方法
2015/03/20 Javascript
微信浏览器内置JavaScript对象WeixinJSBridge使用实例
2015/05/25 Javascript
举例讲解Node.js中的Writable对象
2015/07/29 Javascript
详解JavaScript语言的基本语法要求
2015/11/20 Javascript
JavaScript事件类型中UI事件详解
2016/01/14 Javascript
AngularJS入门教程之AngularJS指令
2016/04/18 Javascript
AngularJs ng-route路由详解及实例代码
2016/09/14 Javascript
函数四种调用模式以及其中的this指向
2017/01/16 Javascript
javascript实现简易计算器
2017/02/01 Javascript
Vue 多层组件嵌套二种实现方式(测试实例)
2017/09/08 Javascript
vuejs实现本地数据的筛选分页功能思路详解
2017/11/15 Javascript
React 无状态组件(Stateless Component) 与高阶组件
2018/08/14 Javascript
微信小程序实现日历功能
2018/11/27 Javascript
Flutter部件内部状态管理小结之实现Vue的v-model功能
2019/06/11 Javascript
layui实现下拉框三级联动
2019/07/26 Javascript
微信小程序 SOTER 生物认证DEMO 指纹识别功能
2019/12/13 Javascript
Python中字典(dict)和列表(list)的排序方法实例
2014/06/16 Python
Python利用Beautiful Soup模块搜索内容详解
2017/03/29 Python
关于Python数据结构中字典的心得
2017/12/04 Python
Django如何自定义分页
2018/09/25 Python
python 叠加等边三角形的绘制的实现
2019/08/14 Python
非洲NO.1网上商店:Jumia肯尼亚
2016/08/18 全球购物
英国花园、DIY、电器和家居用品商店:Robert Dyas
2019/03/18 全球购物
英国IT硬件供应商,定制游戏PC:Mesh Computers
2019/03/28 全球购物
介绍一下Python中webbrowser的用法
2013/05/07 面试题
管事部库房保管员岗位职责
2014/02/21 职场文书
医师定期考核实施方案
2014/05/07 职场文书
作风建设年活动实施方案
2014/10/24 职场文书
质量承诺书格式范文
2015/04/28 职场文书
2015年政治教研组工作总结
2015/07/22 职场文书
CSS使用SVG实现动态分布的圆环发散路径动画
2022/12/24 HTML / CSS