解析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提取中文首字母
Apr 09 PHP
php 结果集的分页实现代码
Mar 10 PHP
PHP简洁函数(PHP简单明了函数语法)
Jun 10 PHP
浅析Dos下运行php.exe,出现没有找到php_mbstring.dll 错误的解决方法
Jun 29 PHP
PHP迭代器的内部执行过程详解
Nov 12 PHP
百度ping方法使用示例 自动ping百度
Jan 26 PHP
PHP处理Oracle的CLOB实例
Nov 03 PHP
深入理解PHP中的Streams工具
Jul 03 PHP
解读PHP中上传文件的处理问题
May 29 PHP
php cookie 详解使用实例
Nov 03 PHP
php实现网页端验证码功能
Jul 11 PHP
PHP实现Redis单据锁以及防止并发重复写入
Apr 10 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
利用discuz实现PHP大文件上传应用实例代码
2008/11/14 PHP
php中is_null,empty,isset,unset 的区别详细介绍
2013/04/28 PHP
PHP has encountered a Stack overflow问题解决方法
2014/11/03 PHP
分析PHP中单双引号的误区和双引号小隐患
2016/07/19 PHP
Laravel5.1 框架路由基础详解
2020/01/04 PHP
(currentStyle)javascript为何有时用style得不到已设定的CSS的属性
2007/08/15 Javascript
JavaScript ECMA-262-3 深入解析.第三章.this
2011/09/28 Javascript
AngularJS自定义服务与fliter的混合使用
2016/11/24 Javascript
Jquery删除css属性的简单方法
2016/12/04 Javascript
JavaScript数据结构之二叉树的计数算法示例
2017/04/13 Javascript
layui表单提交到后台自动封装到实体类的方法
2019/09/12 Javascript
vue 导航内容设置选中状态样式的例子
2019/11/01 Javascript
让 python 命令行也可以自动补全
2014/11/30 Python
实例讲解Python编程中@property装饰器的用法
2016/06/20 Python
Python的requests网络编程包使用教程
2016/07/11 Python
Python实现八大排序算法
2016/08/13 Python
浅谈python中copy和deepcopy中的区别
2017/10/23 Python
Python语言描述连续子数组的最大和
2018/01/04 Python
想学python 这5本书籍你必看!
2018/12/11 Python
解决PyCharm不运行脚本,而是运行单元测试的问题
2019/01/17 Python
Python叠加两幅栅格图像的实现方法
2019/07/05 Python
django搭建项目配置环境和创建表过程详解
2019/07/22 Python
Pycharm+Python+PyQt5使用详解
2019/09/25 Python
django框架cookie和session用法实例详解
2019/12/10 Python
python 如何实现遗传算法
2020/09/22 Python
python中用Scrapy实现定时爬虫的实例讲解
2021/01/18 Python
写一个方法,输入一个文件名和一个字符串,统计这个字符串在这个文件中出现的次数
2016/04/13 面试题
财务会计专业毕业生自荐信
2013/10/02 职场文书
竞聘书模板
2014/03/31 职场文书
素质教育标语
2014/06/27 职场文书
管理工程专业求职信
2014/08/10 职场文书
研究生简历自我评价范文
2014/09/13 职场文书
孔庙导游词
2015/02/04 职场文书
2015年迎新晚会策划书
2015/07/16 职场文书
分析JVM源码之Thread.interrupt系统级别线程打断
2021/06/29 Java/Android
Win11查看设备管理器
2022/04/19 数码科技