解析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&&mysql)四
Oct 09 PHP
php自定义函数call_user_func和call_user_func_array详解
Jul 14 PHP
php页码形式分页函数支持静态化地址及ajax分页
Mar 28 PHP
php定义数组和使用示例(php数组的定义方法)
Mar 29 PHP
PHP随机生成唯一HASH值自定义函数
Apr 20 PHP
浅析PHP中call user func()函数及如何使用call user func调用自定义函数
Nov 05 PHP
YiiFramework入门知识点总结(图文教程)
Dec 28 PHP
phpmyadmin下载、安装、配置教程
May 16 PHP
利用php操作memcache缓存的基础方法示例
Aug 02 PHP
Linux下 php7安装redis的方法
Nov 01 PHP
php查询内存信息操作示例
May 09 PHP
利用PHP计算有多少小于当前数字的数字方法示例
Aug 26 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时间戳与日期的转换
2013/06/06 PHP
(PHP实现)只使用++运算实现加法,减法,乘法,除法
2013/06/27 PHP
PHP批量检测并去除文件BOM头代码实例
2014/05/08 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
2017/11/17 PHP
laravel 时间格式转时间戳的例子
2019/10/11 PHP
怎么用javascript进行拖拽
2006/07/20 Javascript
javascript 写类方式之四
2009/07/05 Javascript
jQuery学习笔记(1)--用jQuery实现异步通信(用json传值)具体思路
2013/04/08 Javascript
jquery属性过滤选择器使用示例
2013/06/18 Javascript
struts2+jquery+json实现异步加载数据(自写)
2013/06/24 Javascript
JS实现仿中关村论坛评分后弹出提示效果的方法
2015/02/23 Javascript
JavaScript实现随机替换图片的方法
2015/04/16 Javascript
JS中对Cookie的操作详解
2016/08/05 Javascript
用v-html解决Vue.js渲染中html标签不被解析的问题
2016/12/14 Javascript
jquery UI Datepicker时间控件冲突问题解决
2016/12/16 Javascript
ES6学习之变量的解构赋值
2017/02/12 Javascript
浅谈Vue.js 1.x 和 2.x 实例的生命周期
2017/07/25 Javascript
详解js的作用域、预解析机制
2018/02/05 Javascript
vue将对象新增的属性添加到检测序列的方法
2018/02/24 Javascript
javascript数据类型中的一些小知识点(推荐)
2019/04/18 Javascript
Vue可自定义tab组件用法实例
2019/10/24 Javascript
python数据结构之二叉树的遍历实例
2014/04/29 Python
Python argv用法详解
2016/01/08 Python
python logging日志模块的详解
2017/10/29 Python
python顺序的读取文件夹下名称有序的文件方法
2018/07/11 Python
解决PyCharm的Python.exe已经停止工作的问题
2018/11/29 Python
python实现通过队列完成进程间的多任务功能示例
2019/10/28 Python
html5 input元素新特性_动力节点Java学院整理
2017/07/06 HTML / CSS
基于HTML5 的人脸识别活体认证的实现方法
2016/06/22 HTML / CSS
德国圣伯纳德草药屋:Kräuterhaus Sanct Bernhard(有中文站)
2018/08/05 全球购物
环境工程毕业生自荐信
2013/11/17 职场文书
就业自我评价
2014/02/04 职场文书
项目申报专员岗位职责
2014/07/09 职场文书
国庆节促销广告语2014
2014/09/19 职场文书
秋季运动会开幕词
2015/01/28 职场文书
教师个人年终总结
2015/02/11 职场文书