解析PHP函数array_flip()在重复数组元素删除中的作用


Posted in PHP onJune 27, 2013

我们都知道,PHP中的数组元素删除的方式可以有很多种,经常用到的函数有php中array_unique()。那么我们今天为大家介绍的PHP函数array_flip()在删除数组重复元素时的效率要比array_unique()函数高出大约5倍左右。
PHP函数array_flip()格式:

array array_flip ( array trans ) 
//array_flip -- 交换数组中的键和值

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

究竟是怎么回事呢?来看下array_flip()的作用:PHP函数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" => 20); 

这里 $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);

上面PHP函数array_flip()的代码写得简洁一些就是:
$arr1 = array_flip(array_flip($arr1));
PHP 相关文章推荐
文件上传类
Oct 09 PHP
通过对服务器端特性的配置加强php的安全
Oct 09 PHP
PHP开发中的错误收集,不定期更新。
Feb 03 PHP
php基础教程 php内置函数实例教程
Aug 21 PHP
深入分析使用mysql_fetch_object()以对象的形式返回查询结果
Jun 05 PHP
thinkPHP中验证码的简单使用方法
Dec 26 PHP
PHP中读取文件的几个方法总结(推荐)
Jun 03 PHP
yii2.0实现创建简单widgets示例
Jul 18 PHP
浅谈php中curl、fsockopen的应用
Dec 10 PHP
php+mysql+jquery实现日历签到功能
Feb 27 PHP
详解PHP字符串替换str_replace()函数四种用法
Oct 13 PHP
Laravel-添加后台模板AdminLte的实现方法
Oct 08 PHP
PHP数组排序函数合集 以及它们之间的联系分析
Jun 27 #PHP
解析file_get_contents模仿浏览器头(user_agent)获取数据
Jun 27 #PHP
基于php常用函数总结(数组,字符串,时间,文件操作)
Jun 27 #PHP
浅析php中抽象类和接口的概念以及区别
Jun 27 #PHP
领悟php接口中interface存在的意义
Jun 27 #PHP
CURL状态码列表(详细)
Jun 27 #PHP
解析linux下安装memcacheq(mcq)全过程笔记
Jun 27 #PHP
You might like
新版mysql+apache+php Linux安装指南
2006/10/09 PHP
PHP防止注入攻击实例分析
2014/11/03 PHP
PHP响应post请求上传文件的方法
2015/12/17 PHP
Jquery Ajax学习实例5 向WebService发出请求,返回泛型集合数据的异步调用
2010/03/17 Javascript
js中将字符串转换成json的三种方式
2011/01/12 Javascript
JavaScript实现网页图片等比例缩放实现代码及调用方式
2013/02/25 Javascript
jquery改变tr背景色的示例代码
2013/12/28 Javascript
js动态改变select选择变更option的index值示例
2014/07/10 Javascript
使用js实现的简单拖拽效果
2015/03/18 Javascript
学习JavaScript编程语言的8张思维导图分享
2015/03/27 Javascript
浅析JavaScript动画
2015/06/10 Javascript
AngularJS基础 ng-submit 指令简单示例
2016/08/03 Javascript
NODE.JS跨域问题的完美解决方案
2016/10/20 Javascript
JavaScript之cookie技术详解
2016/11/18 Javascript
Angular ui.bootstrap.pagination分页
2017/01/20 Javascript
完美实现js焦点轮播效果(一)
2017/03/07 Javascript
vue+vuex+axios+echarts画一个动态更新的中国地图的方法
2017/12/19 Javascript
Bootstrap开发中Tab标签页切换图表显示问题的解决方法
2018/07/13 Javascript
vue脚手架搭建项目的兼容性配置详解
2018/07/17 Javascript
详解webpack-dev-server使用方法
2018/09/14 Javascript
微信小程序实现身份证取景框拍摄
2020/09/09 Javascript
[57:55]EG vs Fnatic 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
TensorFlow高效读取数据的方法示例
2018/02/06 Python
Sanic框架Cookies操作示例
2018/07/17 Python
Python3 sys.argv[ ]用法详解
2019/10/24 Python
python线程join方法原理解析
2020/02/11 Python
纯css3实现效果超级炫的checkbox复选框和radio单选框
2014/09/01 HTML / CSS
澳大利亚UGG工厂直销:Australian Ugg Boots
2017/10/14 全球购物
创联软件面试题笔试题
2012/10/07 面试题
优秀党员转正的自我评价
2013/10/06 职场文书
销售总监岗位职责
2014/01/04 职场文书
高中毕业自我评价
2014/02/08 职场文书
个人近期表现材料
2014/02/11 职场文书
2014村党支部书记党建工作汇报材料
2014/11/02 职场文书
Filebeat 采集 Nginx 日志的方法
2021/03/31 Servers
Golang Gob编码(gob包的使用详解)
2021/05/07 Golang