php array_flip() 删除数组重复元素


Posted in PHP onJanuary 14, 2009

方法如下:
$arr = array(…………) ;//假设有一万个元素的数组,里面有重复的元素。
$arr = array_flip(array_flip($arr)); //这样便可以删除重复元素。

究竟是怎么回事呢?来看下array_flip()的作用:array_flip()用于将一个数组的每个元素的键和值交换,如:
$arr1 = array (”age” => 30, “name” => “快乐园”);
$arr2 = array_flip($arr1); //$arr2 就是 array(30 => “age”, “快乐园” => “name”);
在PHP的数组中,允许不同的元素可以取同一个值,但不允许同一个键名被不同的元素使用,如:
$arr1 = array (”age” => 30, “name” => “快乐园”, “age” => 20); “age” => 20将会取代”age” => 30
$arr1 = array (”name” => “快乐园”, “age” => 45);
这里 $arr1与$arr2 是相等的。
于是,我们便可以知道,为什么 array_flip(array_flip($arr)) 可以删除数组中重复的元素了。首先,$arr里的值会变成键名,因为值是有重复的,变成键名之后这些重复的值便成了重复的键名,PHP引擎将重复的键名删除,只保留最后一个。如:
$arr1 = array (”age” => 30, “name” => “快乐园”, “age” => 20);
$arr1 = array_flip($arr1); //$arr1 变成了 array(”快乐园” => “name”, 20 => “age”);
//再把 $arr1 的键名与值还复:
$arr1 = array_flip($arr1);

上面的代码写得简洁一些就是: $arr1 = array_flip(array_flip($arr1));

PHP 相关文章推荐
PHP的ASP防火墙
Oct 09 PHP
php利用iframe实现无刷新文件上传功能的代码
Sep 29 PHP
php比较多维数组中值的大小排序实现代码
Sep 08 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十)
Jun 24 PHP
为你总结一些php系统类函数
Oct 21 PHP
CentOS下与Apache连接的PHP多版本共存方案实现详解
Dec 19 PHP
PHP下载文件的函数实例代码
May 18 PHP
PHP判断用户是否已经登录(跳转到不同页面或者执行不同动作)
Sep 22 PHP
PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能
Nov 10 PHP
php+ajax实现无刷新文件上传功能(ajaxuploadfile)
Feb 11 PHP
Laravel 中创建 Zip 压缩文件并提供下载的实现方法
Apr 02 PHP
PHP进阶学习之反射基本概念与用法分析
Jun 18 PHP
PHP mkdir()定义和用法
Jan 14 #PHP
php array_intersect()函数使用代码
Jan 14 #PHP
php strtotime 函数UNIX时间戳
Jan 14 #PHP
php str_pad 函数使用详解
Jan 13 #PHP
php mssql 时间格式问题
Jan 13 #PHP
php zend 相对路径问题
Jan 12 #PHP
PHP setcookie() cannot modify header information 的解决方法
Jan 09 #PHP
You might like
PHP jQuery表单,带验证具体实现方法
2014/02/15 PHP
php断点续传之如何分割合并文件
2014/03/22 PHP
5 cool javascript apps
2007/03/24 Javascript
Json序列化和反序列化方法解析
2013/12/19 Javascript
纯JS实现根据CSS的class选择DOM
2014/03/22 Javascript
Node.js中的process.nextTick使用实例
2015/06/25 Javascript
Bootstrap网格系统详解
2016/04/26 Javascript
Canvas + JavaScript 制作图片粒子效果
2017/02/08 Javascript
ES6实现的遍历目录函数示例
2017/04/07 Javascript
解决OneThink中无法异步提交kindeditor文本框中修改后的内容方法
2017/05/05 Javascript
layui选项卡效果实现代码
2017/05/19 Javascript
基于openlayers4实现点的扩散效果
2020/08/17 Javascript
Webpack中publicPath路径问题详解
2018/05/03 Javascript
使用vue打包时vendor文件过大或者是app.js文件很大的问题
2018/06/29 Javascript
setTimeout与setInterval的区别浅析
2019/03/23 Javascript
node后端服务保活的实现
2019/11/10 Javascript
JS造成内存泄漏的几种情况实例分析
2020/03/02 Javascript
JS对象属性的检测与获取操作实例分析
2020/03/17 Javascript
Vue如何提升首屏加载速度实例解析
2020/06/25 Javascript
[47:06]DOTA2上海特级锦标赛主赛事日 - 4 败者组第五轮 MVP.Phx VS EG第一局
2016/03/05 DOTA
[48:31]完美世界DOTA2联赛PWL S3 DLG vs Phoenix 第二场 12.17
2020/12/19 DOTA
教你用Python脚本快速为iOS10生成图标和截屏
2016/09/22 Python
python opencv读mp4视频的实例
2018/12/07 Python
PyQt5使用QTimer实现电子时钟
2019/07/29 Python
最新版 Windows10上安装Python 3.8.5的步骤详解
2020/11/28 Python
Nuts.com:优质散装,批发坚果、干果和巧克力等
2017/03/21 全球购物
星空联盟C# .net笔试题
2014/12/05 面试题
计算机售后服务承诺书
2014/05/30 职场文书
工商管理专业自荐信
2014/06/03 职场文书
民族学专业职业生涯规划范文:积跬步以至千里
2014/09/11 职场文书
农村党支部书记四风问题个人对照检查材料
2014/09/21 职场文书
法院四风对照检查材料思想汇报
2014/10/06 职场文书
2014年煤矿工作总结
2014/11/24 职场文书
董事长秘书岗位职责
2015/02/13 职场文书
医院感染管理制度
2015/08/05 职场文书
mysql 排序失效
2022/05/20 MySQL