解析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 相关文章推荐
mysql5的sql文件导入到mysql4的方法
Oct 19 PHP
全世界最小的php网页木马一枚 附PHP木马的防范方法
Oct 09 PHP
PHP设计模式之解释器模式的深入解析
Jun 13 PHP
destoon整合ucenter后注册页面不跳转的解决方法
Jun 21 PHP
smarty模板引擎中变量及变量修饰器用法实例
Jan 22 PHP
php文件上传简单实现方法
Jan 24 PHP
3种php生成唯一id的方法
Nov 23 PHP
php ajax异步读取rss文档数据
Mar 29 PHP
关于php中一些字符串总结
May 05 PHP
PHP实现图片批量打包下载功能
Mar 01 PHP
关于PHP转换超过2038年日期出错的问题解决
Jun 28 PHP
PHP强制转化的形式整理
May 22 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
PHP 开源框架22个简单简介
2009/08/24 PHP
献给php初学者(入门学习经验谈)
2010/10/12 PHP
详解PHP处理密码的几种方式
2016/11/30 PHP
关于javascript document.createDocumentFragment()
2009/04/04 Javascript
jquery解决图片路径不存在执行替换路径
2013/02/06 Javascript
解析URI与URL之间的区别与联系
2013/11/22 Javascript
谈一谈javascript中继承的多种方式
2016/02/19 Javascript
为什么JavaScript没有块级作用域
2016/05/22 Javascript
微信小程序 教程之注册页面
2016/10/17 Javascript
webpack开发跨域问题解决办法
2017/08/03 Javascript
用vue2.0实现点击选中active其他选项互斥的效果
2018/04/12 Javascript
react的滑动图片验证码组件的示例代码
2019/02/27 Javascript
在 Vue 中使用 JSX 及使用它的原因浅析
2020/02/10 Javascript
[02:21]2018完美盛典章节片——初心
2018/12/17 DOTA
Python常见文件操作的函数示例代码
2011/11/15 Python
python基础教程之实现石头剪刀布游戏示例
2014/02/11 Python
python中OrderedDict的使用方法详解
2017/05/05 Python
Python3 实现随机生成一组不重复数并按行写入文件
2018/04/09 Python
python 用正则表达式筛选文本信息的实例
2018/06/05 Python
详解python里的命名规范
2018/07/16 Python
Python使用Pickle模块进行数据保存和读取的讲解
2019/04/09 Python
关于Django Models CharField 参数说明
2020/03/31 Python
在Django中自定义filter并在template中的使用详解
2020/05/19 Python
详解python爬取弹幕与数据分析
2020/11/14 Python
使用CSS3在触屏上为按钮实现激活效果
2013/09/27 HTML / CSS
测试驱动开发的主要步骤是什么
2014/12/10 面试题
《埃及的金字塔》教学反思
2014/04/07 职场文书
"9.18"国耻日演讲稿范文
2014/09/14 职场文书
上班迟到检讨书范文300字
2014/11/02 职场文书
2015教师见习期工作总结
2014/12/12 职场文书
常住证明范本
2015/06/23 职场文书
教师读书笔记
2015/06/29 职场文书
结婚纪念日感言
2015/08/01 职场文书
党员反四风学习心得体会
2016/01/22 职场文书
分析SQL窗口函数之取值窗口函数
2022/04/21 Oracle
优化Mysql查询的示例
2022/04/26 MySQL