解析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 飞信好友免费短信API接口开源版
Jul 22 PHP
解析阿里云ubuntu12.04环境下配置Apache+PHP+PHPmyadmin+MYsql
Jun 26 PHP
php之Smarty模板使用方法示例详解
Jul 08 PHP
php实现按指定大小等比缩放生成上传图片缩略图的方法
Dec 15 PHP
PHP面向对象之后期静态绑定功能介绍
May 18 PHP
Thinkphp无限级分类代码
Nov 11 PHP
php文件上传类完整实例
May 14 PHP
PHP文件操作详解
Dec 30 PHP
PHP解耦的三重境界(浅谈服务容器)
Mar 13 PHP
解决出现SoapFault (looks like we got no XML document)的问题
Jun 24 PHP
解决在laravel中auth建立时候遇到的问题
Oct 15 PHP
PHP解决高并发问题
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
星际争霸教主Flash的ID由来:你永远不会知道他之前的ID是www!
2019/01/18 星际争霸
PHP表单提交表单名称含有点号(.)则会被转化为下划线(_)
2011/12/14 PHP
解决laravel(5.5)访问public报错的问题
2019/10/12 PHP
PHP设计模式入门之状态模式原理与实现方法分析
2020/04/26 PHP
javascript 操作文件 实现方法小结
2009/07/02 Javascript
百度地图api应用标注地理位置信息(js版)
2013/02/01 Javascript
你可能不知道的JavaScript的new Function()方法
2014/04/17 Javascript
JS+CSS实现感应鼠标渐变显示DIV层的方法
2015/02/20 Javascript
JavaScript实现给按钮加上双重动作的方法
2015/08/14 Javascript
noty ? jQuery通知插件全面解析
2016/05/18 Javascript
实例解析jQuery中proxy()函数的用法
2016/05/24 Javascript
KnockoutJS 3.X API 第四章之表单submit、enable、disable绑定
2016/10/10 Javascript
Canvas 绘制粒子动画背景
2017/02/15 Javascript
基于jquery实现二级联动效果
2017/03/30 jQuery
BootStrap 页签切换失效的解决方法
2017/08/17 Javascript
vue+webpack 打包文件 404 页面空白的解决方法
2018/02/28 Javascript
解决Nodejs全局安装模块后找不到命令的问题
2018/05/15 NodeJs
详解puppeteer使用代理
2018/12/27 Javascript
详解element-ui中form验证杂记
2019/03/04 Javascript
浅析Vue中拆分视图层代码的5点建议
2019/08/15 Javascript
vue页面加载时的进度条功能(实例代码)
2020/01/13 Javascript
python开发之IDEL(Python GUI)的使用方法图文详解
2015/11/12 Python
python爬虫_自动获取seebug的poc实例
2017/08/05 Python
pycharm配置当鼠标悬停时快速提示方法参数
2019/07/31 Python
Django全局启用登陆验证login_required的方法
2020/06/02 Python
opencv 阈值分割的具体使用
2020/07/08 Python
Python3.9最新版下载与安装图文教程详解(Windows系统为例)
2020/11/28 Python
详解Python模块化编程与装饰器
2021/01/16 Python
Python利用socket模块开发简单的端口扫描工具的实现
2021/01/27 Python
安全的后院和健身蹦床:JumpSport
2019/07/15 全球购物
UNIX文件系统常用命令
2012/05/25 面试题
优秀求职信范文分享
2014/01/26 职场文书
群众路线教育实践活动实施方案
2014/10/31 职场文书
会计入职心得体会
2016/01/22 职场文书
CSS font-variation 可变字体的魅力(实例详解)
2022/03/03 HTML / CSS
vue-cli3.0修改打包后的文件名和文件地址,打包后本地运行报错解决
2022/04/06 Vue.js