解析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 Ajax乱码
Apr 09 PHP
在PHP中操作Excel实例代码
Apr 29 PHP
Windows下利用Gvim写PHP产生中文乱码问题解决方法
Apr 20 PHP
ThinkPHP验证码使用简明教程
Mar 05 PHP
ThinkPHP关于session的操作方法汇总
Jul 18 PHP
PHP字符串word末字符实现大小写互换的方法
Nov 10 PHP
php操作mongoDB实例分析
Dec 29 PHP
php专用数组排序类ArraySortUtil用法实例
Apr 03 PHP
PHP扩展Memcache分布式部署方案
Dec 06 PHP
PHP中静态变量的使用方法实例分析
Dec 01 PHP
PHP PDOStatement::execute讲解
Jan 31 PHP
laravel 实现上传图片到本地和前台访问示例
Oct 21 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中的global
2014/08/19 PHP
destoon文章模块调用企业会员资料的方法
2014/08/22 PHP
开启PHP的伪静态模式
2015/12/31 PHP
PHP的消息通信机制测试实例
2016/11/10 PHP
php中strlen和mb_strlen用法实例分析
2016/11/12 PHP
实例分析PHP中PHPMailer发邮件
2017/12/13 PHP
理解Javascript_10_对象模型
2010/10/16 Javascript
js中各种类型的变量在if条件中是true还是false
2014/07/16 Javascript
javascript对中文按照拼音排序代码
2014/08/20 Javascript
JavaScript获取各大浏览器信息图示
2015/11/20 Javascript
JavaScript实现简单的tab选项卡切换
2016/01/05 Javascript
JavaScript基础之流程控制语句的用法
2017/08/31 Javascript
解决iView中时间控件选择的时间总是少一天的问题
2018/03/15 Javascript
nodejs取得当前执行路径的方法
2018/05/13 NodeJs
对vue v-if v-else-if v-else 的简单使用详解
2018/09/29 Javascript
Vue.js中使用Vuex实现组件数据共享案例
2020/07/31 Javascript
Vue3配置axios跨域实现过程解析
2020/11/25 Vue.js
python从ftp下载数据保存实例
2013/11/20 Python
python计算最大优先级队列实例
2013/12/18 Python
Python中动态获取对象的属性和方法的教程
2015/04/09 Python
Python入门之三角函数tan()函数实例详解
2017/11/08 Python
python实现用户管理系统
2018/01/10 Python
10 行 Python 代码教你自动发送短信(不想回复工作邮件妙招)
2018/10/11 Python
python使用pymongo操作mongo的完整步骤
2019/04/13 Python
微信公众号token验证失败解决方案
2019/07/22 Python
python代码 FTP备份交换机配置脚本实例解析
2019/08/01 Python
numpy.transpose()实现数组的转置例子
2019/12/02 Python
利用python生成照片墙的示例代码
2020/04/09 Python
python实现批处理文件
2020/07/28 Python
python3.9实现pyinstaller打包python文件成exe
2020/12/13 Python
JPA面试常见问题
2016/11/14 面试题
正规的求职信范文分享
2013/12/11 职场文书
化妆品促销方案
2014/02/24 职场文书
优秀经理获奖感言
2014/03/04 职场文书
体育比赛口号
2014/06/09 职场文书
Python异常类型以及处理方法汇总
2021/06/05 Python