解析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 相关文章推荐
如何给phpadmin一个保护
Oct 09 PHP
PHP面向对象程序设计之接口用法
Aug 20 PHP
PHP程序员必须清楚的问题汇总
Dec 18 PHP
php从数据库查询结果生成树形列表的方法
Apr 17 PHP
php计算多维数组中所有值总和的方法
Jun 24 PHP
php实现通过cookie换肤的方法
Jul 13 PHP
Zend Framework入门教程之Zend_Mail用法示例
Dec 08 PHP
PHP中单例模式与工厂模式详解
Feb 17 PHP
Laravel中任务调度console使用方法小结
May 07 PHP
Laravel 5.4因特殊字段太长导致migrations报错的解决
Oct 22 PHP
PHP基于timestamp和nonce实现的防止重放攻击方案分析
Jul 26 PHP
laravel-admin 中列表筛选方法
Oct 03 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.ini中添加extension=php_mysqli.dll指令的说明
2007/06/14 PHP
php 时间计算问题小结
2009/01/04 PHP
PHP容易忘记的知识点分享
2013/04/30 PHP
php文件上传的例子及参数详解
2013/12/12 PHP
destoon实现调用热门关键字的方法
2014/07/15 PHP
PHP生成静态HTML文档实现代码
2016/06/23 PHP
php array_values 返回数组的值实例详解
2016/11/17 PHP
thinkphp5 migrate数据库迁移工具
2018/02/20 PHP
javascript Array.remove() 数组删除
2009/08/06 Javascript
JavaScript 事件的一些重要说明
2009/10/25 Javascript
扩展jQuery 键盘事件的几个基本方法
2009/10/30 Javascript
高性能web开发 如何加载JS,JS应该放在什么位置?
2010/05/14 Javascript
jQuery function的正确书写方法
2013/08/02 Javascript
nodejs获取本机内网和外网ip地址的实现代码
2014/06/01 NodeJs
jquery+CSS实现的水平布局多级网页菜单效果
2015/08/24 Javascript
理解javascript中try...catch...finally
2015/12/25 Javascript
非常实用的js验证框架实现源码 附原理方法
2016/06/08 Javascript
浅谈react受控组件与非受控组件(小结)
2018/02/09 Javascript
Layui Table js 模拟选中checkbox的例子
2019/09/03 Javascript
微信小程序实现电子签名并导出图片
2020/05/27 Javascript
Javascript中window.name属性详解
2020/11/19 Javascript
[05:09]2016国际邀请赛中国区预选赛淘汰赛首日精彩回顾
2016/06/29 DOTA
Python回调函数用法实例详解
2015/07/02 Python
Python lambda表达式用法实例分析
2018/12/25 Python
Python八皇后问题解答过程详解
2019/07/29 Python
python装饰器实现对异常代码出现进行自动监控的实现方法
2020/09/15 Python
python 自动识别并连接串口的实现
2021/01/19 Python
西班牙太阳镜品牌:Hawkers
2018/03/11 全球购物
地球鞋加拿大官网:Earth Shoes Canada
2020/11/17 全球购物
abstract class和interface有什么区别?
2012/01/03 面试题
在C中是否有模拟继承等面向对象程序设计特性的好方法
2012/05/22 面试题
挂职思想汇报
2013/12/31 职场文书
户外婚礼策划方案
2014/02/08 职场文书
销售简历自我评价怎么写
2014/09/26 职场文书
销售员未完成销售业绩的检讨书
2014/10/12 职场文书
小学生暑假安全公约
2015/07/14 职场文书