解析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 相关文章推荐
基于文本的搜索
Oct 09 PHP
《PHP边学边教》(02.Apache+PHP环境配置――上篇)
Dec 13 PHP
php 归并排序 数组交集
May 10 PHP
php 转换字符串编码 iconv与mb_convert_encoding的区别说明
Nov 10 PHP
PHP中的正则表达式函数介绍
Feb 27 PHP
基于Zookeeper的使用详解
May 02 PHP
ThinkPHP之M方法实例详解
Jun 20 PHP
PHP反射使用实例和PHP反射API的中文说明
Jul 02 PHP
thinkphp实现发送邮件密码找回功能实例
Dec 01 PHP
WordPress中邮件的一些修改和自定义技巧
Dec 15 PHP
yii2.0数据库迁移教程【多个数据库同时同步数据】
Oct 08 PHP
Memcached介绍及php-memcache扩展安装
Apr 01 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
冰滴咖啡制作步骤
2021/03/03 冲泡冲煮
PHP - Html Transfer Code
2006/10/09 PHP
php数组函数序列之array_search()- 按元素值返回键名
2011/11/04 PHP
ThinkPHP中处理表单中的注意事项
2014/11/22 PHP
php中数据库连接方式pdo和mysqli对比分析
2015/02/25 PHP
Prototype Class对象学习
2009/07/19 Javascript
基于jquery创建的一个图片、视频缓冲的效果样式插件
2012/08/28 Javascript
当鼠标滑过文本框自动选中输入框内容的JS代码分享
2013/11/26 Javascript
通过url查找a元素应用案例
2014/04/29 Javascript
js如何准确获取当前页面url网址信息
2020/09/13 Javascript
js中获取时间new Date()的全面介绍
2016/06/20 Javascript
浅谈AngularJs指令之scope属性详解
2016/10/24 Javascript
ActiveX控件的使用-js实现打印超市小票功能代码详解
2017/11/22 Javascript
基于Vue+element-ui 的Table二次封装的实现
2018/07/20 Javascript
jsonp跨域及实现百度首页联想功能的方法
2018/08/30 Javascript
关于Vue项目跨平台运行问题的解决方法
2018/09/18 Javascript
vue 2.5.1 源码学习 之Vue.extend 和 data的合并策略
2019/06/04 Javascript
JS数组进阶示例【数组的几种函数用法】
2020/01/16 Javascript
python中ConfigParse模块的用法
2014/09/29 Python
Python中不同进制的语法及转换方法分析
2016/07/27 Python
Python编程之序列操作实例详解
2017/07/22 Python
python保存网页图片到本地的方法
2018/07/24 Python
python高效过滤出文件夹下指定文件名结尾的文件实例
2018/10/21 Python
tornado+celery的简单使用详解
2019/12/21 Python
Python 调用C++封装的进一步探索交流
2021/03/04 Python
web页面录屏实现
2019/02/12 HTML / CSS
Nike爱尔兰官方网站:Nike.com (IE)
2018/03/12 全球购物
浙大网新C/C++面试解惑
2015/05/27 面试题
英语感恩演讲稿
2014/01/14 职场文书
租房合同协议书
2014/04/09 职场文书
学校安全教育月活动总结
2014/07/07 职场文书
2014向国旗敬礼网上签名活动总结
2014/09/27 职场文书
2015年仓库管理员工作总结
2015/04/21 职场文书
2015年创先争优工作总结
2015/05/23 职场文书
2019个人工作计划书的格式及范文!
2019/07/04 职场文书
PYTHON InceptionV3模型的复现详解
2022/05/06 Python