解析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的FTP学习(三)
Oct 09 PHP
PHP HTML代码串 截取实现代码
Jun 29 PHP
第三章 php操作符与控制结构代码
Dec 30 PHP
php命令行使用方法和命令行参数说明
Apr 08 PHP
PHP+FFMPEG实现将视频自动转码成H264标准Mp4文件
Sep 24 PHP
php计算给定时间之前的函数用法实例
Apr 03 PHP
PHP对文件夹递归执行chmod命令的方法
Jun 19 PHP
php常用数组array函数实例总结【赋值,拆分,合并,计算,添加,删除,查询,判断,排序】
Dec 07 PHP
浅谈php中curl、fsockopen的应用
Dec 10 PHP
Laravel框架分页实现方法分析
Jun 12 PHP
PHP删除数组中指定值的元素常用方法实例分析【4种方法】
Aug 21 PHP
Thinkphp5.0框架使用模型Model的获取器、修改器、软删除数据操作示例
Oct 11 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数组实现无限分类,不使用数据库,不使用递归.
2006/12/09 PHP
新手配置 PHP 调试环境(IIS+PHP+MYSQL)
2007/01/10 PHP
php学习之数据类型之间的转换代码
2011/05/29 PHP
PHP在获取指定目录下的目录,在获取的目录下面再创建文件,多平台
2011/08/03 PHP
Smarty的配置与高级缓存技术分享
2012/06/05 PHP
关于PHP递归算法和应用方法介绍
2013/04/15 PHP
php curl基本操作详解
2013/07/23 PHP
PHP使用file_get_content设置头信息的方法
2016/02/14 PHP
php中Redis的应用--消息传递
2017/03/28 PHP
php实现的二叉树遍历算法示例
2017/06/15 PHP
php微信公众号开发之微信企业付款给个人
2018/10/04 PHP
ie 调试javascript的工具
2009/04/29 Javascript
jquery CSS选择器笔记
2010/03/29 Javascript
JS正则表达式获取分组内容的方法详解
2013/11/15 Javascript
JS判断移动端访问设备并加载对应CSS样式
2014/06/13 Javascript
js简单实现表单中点击按钮动态增加输入框数量的方法
2015/08/18 Javascript
基于jquery实现最简单的选项卡切换效果
2016/05/08 Javascript
Bootstrap企业网站实战项目4
2016/10/14 Javascript
Vue中定义全局变量与常量的各种方式详解
2017/08/23 Javascript
如何在vue 中使用柱状图 并自修改配置
2021/01/21 Vue.js
python基础教程之匿名函数lambda
2017/01/17 Python
Python http接口自动化测试框架实现方法示例
2018/12/06 Python
pytorch获取vgg16-feature层输出的例子
2019/08/20 Python
Python实现图片裁剪的两种方式(Pillow和OpenCV)
2019/10/30 Python
Python Des加密解密如何实现软件注册码机器码
2020/01/08 Python
css3弹性盒模型(Flexbox)详细介绍
2014/10/08 HTML / CSS
HTML5中的autofocus(自动聚焦)属性介绍
2014/04/23 HTML / CSS
StubHub智利:购买和出售您的门票
2016/11/23 全球购物
adidas瑞典官方网站:购买阿迪达斯鞋子和运动服
2019/12/11 全球购物
小学教师办公室制度
2014/02/03 职场文书
大学生校园创业计划书
2014/02/08 职场文书
负责人任命书范本
2014/06/04 职场文书
优秀学生主要事迹怎么写
2015/11/04 职场文书
大学生团支书竞选稿
2015/11/21 职场文书
新学期家长寄语2016
2015/12/03 职场文书
创业计划书之美容店
2019/09/16 职场文书