解析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 相关文章推荐
第四节 构造函数和析构函数 [4]
Oct 09 PHP
php读取30天之内的根据算法排序的代码
Apr 06 PHP
PHP 缓存实现代码及详细注释
May 16 PHP
深入解析PHP中的(伪)多线程与多进程
Jul 01 PHP
PHP中Header使用的HTTP协议及常用方法小结
Nov 04 PHP
PHP易混淆函数的区别及用法汇总
Nov 22 PHP
使用PHP处理数据库数据如何将数据返回客户端并显示当前状态
Feb 16 PHP
php制作简单模版引擎
Apr 07 PHP
PHP+Ajax 检测网络是否正常实例详解
Dec 16 PHP
php redis实现对200w用户的即时推送
Mar 04 PHP
ThinkPHP框架获取最后一次执行SQL语句及变量调试简单操作示例
Jun 13 PHP
Laravel使用模型实现like模糊查询的例子
Oct 24 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阳历转农历优化版
2016/08/08 PHP
JS中style属性
2006/10/11 Javascript
javascript支持firefox,ie7页面布局拖拽效果代码
2007/12/20 Javascript
javascript中最常用的继承模式 组合继承
2010/08/12 Javascript
几种设置表单元素中文本输入框不可编辑的方法总结
2013/11/25 Javascript
网页右下角弹出窗体实现代码
2014/06/05 Javascript
jQuery表单插件ajaxForm实例详解
2017/01/17 Javascript
vue2.0实现分页组件的实例代码
2017/06/22 Javascript
ES6与CommonJS中的模块处理的区别
2018/06/13 Javascript
浅谈webpack4.x 入门(一篇足矣)
2018/09/05 Javascript
JS获取动态添加元素的方法详解
2019/07/31 Javascript
vue的keep-alive用法技巧
2019/08/15 Javascript
关于ligerui子页面关闭后,父页面刷新,重新加载的方法
2019/09/27 Javascript
js实现的订阅发布者模式简单示例
2020/03/14 Javascript
Python3搜索及替换文件中文本的方法
2015/05/22 Python
Python通过90行代码搭建一个音乐搜索工具
2015/07/29 Python
python中import reload __import__的区别详解
2017/10/16 Python
Python中的Django基本命令实例详解
2018/07/15 Python
python代码 输入数字使其反向输出的方法
2018/12/22 Python
Python图像处理之gif动态图的解析与合成操作详解
2018/12/30 Python
解决python打不开文件(文件不存在)的问题
2019/02/18 Python
python使用Qt界面以及逻辑实现方法
2019/07/10 Python
解决Python正则表达式匹配反斜杠''\''问题
2019/07/17 Python
tensorflow实现在函数中用tf.Print输出中间值
2020/01/21 Python
Python sqlite3查询操作过程解析
2020/02/20 Python
解决pyecharts运行后产生的html文件用浏览器打开空白
2020/03/11 Python
python 弧度与角度互转实例
2020/04/15 Python
python如何删除列为空的行
2020/07/17 Python
Python进行特征提取的示例代码
2020/10/15 Python
使用python爬取抖音app视频的实例代码
2020/12/01 Python
python asyncio 协程库的使用
2021/01/21 Python
工作室成员个人发展规划范文
2014/01/24 职场文书
运动会广播稿400字
2014/01/25 职场文书
员工考核管理制度
2014/02/02 职场文书
电气工程及其自动化专业毕业生自荐信
2014/06/21 职场文书
倡议书的写法
2014/08/30 职场文书