解析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 相关文章推荐
PHP $_SERVER详解
Jan 16 PHP
PHP Curl出现403错误的解决办法
May 29 PHP
PHP开源开发框架ZendFramework使用中常见问题说明及解决方案
Jun 12 PHP
js+php实现静态页面实时调用用户登陆状态的方法
Jan 04 PHP
PHP随机数 C扩展随机数
May 04 PHP
PHP中抽象类和抽象方法概念与用法分析
May 24 PHP
PHP常用的三种设计模式汇总
Aug 28 PHP
解析PHP之提取多维数组指定列的方法
Jan 03 PHP
thinkphp5 加载静态资源路径与常量的方法
Dec 24 PHP
PHP中单例模式的使用场景与使用方法讲解
Mar 18 PHP
JS(jQuery)实现聊天接收到消息语言自动提醒功能详解【提示“您有新的消息请注意查收”】
Apr 16 PHP
PHP获取php,mysql,apche的版本信息及更多服务器信息
Mar 09 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
解决GD中文乱码问题
2007/02/14 PHP
PHP开发框架总结收藏
2008/04/24 PHP
PHP两种实现无级递归分类的方法
2017/03/02 PHP
msn上的tab功能Firefox对childNodes处理的一个BUG
2008/01/21 Javascript
Jquery Validation插件防止重复提交表单的解决方法
2010/03/05 Javascript
jQuery的3种请求方式$.post,$.get,$.getJSON
2014/03/28 Javascript
JQuery拖动表头边框线调整表格列宽效果代码
2014/09/10 Javascript
Nodejs关于gzip/deflate压缩详解
2015/03/04 NodeJs
jQuery实现选中弹出窗口选择框内容后赋值给文本框的方法
2015/11/23 Javascript
JS判断输入的字符串是否是数字的方法(正则表达式)
2016/11/29 Javascript
Vue.js实战之组件的进阶
2017/04/04 Javascript
angular框架实现全选与单选chekbox的自定义
2017/07/06 Javascript
VUE中使用Vue-resource完成交互
2017/07/21 Javascript
Vue2.0如何发布项目实战
2017/07/27 Javascript
js实现数组和对象的深浅拷贝
2017/09/30 Javascript
p5.js入门教程之鼠标交互的示例
2018/03/16 Javascript
Auto.js自动收取自己和好友蚂蚁森林能量脚本
2018/06/28 Javascript
vue中封装axios并实现api接口的统一管理
2020/12/25 Vue.js
[48:45]Ti4 循环赛第二日 NEWBEE vs EG
2014/07/11 DOTA
[38:32]DOTA2上海特级锦标赛A组资格赛#2 Secret VS EHOME第二局
2016/02/26 DOTA
python定时检查某个进程是否已经关闭的方法
2015/05/20 Python
django url到views参数传递的实例
2019/07/19 Python
Python实现的爬取豆瓣电影信息功能案例
2019/09/15 Python
使用python将最新的测试报告以附件的形式发到指定邮箱
2019/09/20 Python
python判断链表是否有环的实例代码
2020/01/31 Python
.img/.hdr格式转.nii格式的操作
2020/07/01 Python
用纯CSS3实现网页中常见的小箭头
2017/10/16 HTML / CSS
html5自带表单验证体验优化及提示气泡修改功能
2017/09/12 HTML / CSS
canvas三角函数模拟水波效果的示例代码
2018/07/03 HTML / CSS
澳大利亚婴儿喂养品牌:Cherub Baby
2018/11/01 全球购物
银行职员自我鉴定
2014/04/20 职场文书
2014年工商所工作总结
2014/12/09 职场文书
一年级语文上册复习计划
2015/01/17 职场文书
家长给老师的感谢信
2015/01/20 职场文书
SpringDataJPA在Entity中常用的注解介绍
2021/12/06 Java/Android
多线程Spring通过@Scheduled实现定时任务
2022/05/25 Java/Android