解析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 相关文章推荐
详细介绍:Apache+PHP+MySQL配置攻略
Sep 05 PHP
yii框架中的Url生产问题小结
Jan 16 PHP
一个基于phpQuery的php通用采集类分享
Apr 09 PHP
ThinkPHP实现跨模块调用操作方法概述
Jun 20 PHP
php生成QRcode实例
Sep 22 PHP
安装ImageMagick出现error while loading shared libraries的解决方法
Sep 23 PHP
php生成RSS订阅的方法
Feb 13 PHP
PHP加密解密字符串汇总
Apr 26 PHP
php计算title标题相似比的方法
Jul 29 PHP
php基于单例模式封装mysql类完整实例
Oct 18 PHP
php 自定义错误日志实例详解
Nov 12 PHP
PHP+Ajax简单get验证操作示例
Mar 02 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实现从上传文件创建缩略图的方法
2015/04/02 PHP
PHP实现QQ登录的开原理和实现过程
2018/02/04 PHP
PHPExcel实现表格导出功能示例【带有多个工作sheet】
2018/06/13 PHP
PHP中echo与print区别点整理
2021/03/09 PHP
jQuery输入城市查看地图使用介绍
2013/05/08 Javascript
js清理Word格式示例代码
2014/02/13 Javascript
判断在css加载完毕后执行后续代码示例
2014/09/03 Javascript
使用jQuery简单实现模拟浏览器搜索功能
2014/12/21 Javascript
学习使用AngularJS文件上传控件
2016/02/16 Javascript
Yarn的安装与使用详细介绍
2016/10/25 Javascript
require、backbone等重构手机图片查看器
2016/11/17 Javascript
原生node.js案例--前后台交互
2017/02/20 Javascript
捕获未处理的Promise错误方法
2017/10/13 Javascript
vue路由导航守卫和请求拦截以及基于node的token认证的方法
2019/04/07 Javascript
微信小程序实现卡片左右滑动效果的示例代码
2019/05/01 Javascript
js实现图片上传即时显示效果
2019/09/30 Javascript
python文件与目录操作实例详解
2016/02/22 Python
使用Django开发简单接口实现文章增删改查
2019/05/09 Python
Python使用itchat模块实现简单的微信控制电脑功能示例
2019/08/26 Python
PyTorch的自适应池化Adaptive Pooling实例
2020/01/03 Python
Python reversed函数及使用方法解析
2020/03/17 Python
Python 列表反转显示的四种方法
2020/11/16 Python
台湾旅游网站:灿星旅游
2018/10/11 全球购物
ECOSUSI官网:女式皮革背包
2019/09/27 全球购物
是否可以从一个static方法内部发出对非static方法的调用?
2014/08/18 面试题
最新创业融资计划书
2014/01/19 职场文书
医药学专业大学生职业生涯规划书论文
2014/01/21 职场文书
德语专业求职信
2014/03/12 职场文书
12岁生日演讲稿
2014/05/14 职场文书
大学生实习证明范本
2014/09/19 职场文书
学校运动会报道稿
2014/09/23 职场文书
2014年学校总务处工作总结
2014/12/08 职场文书
感恩教师节主题班会
2015/08/12 职场文书
大学生村官工作心得体会
2016/01/23 职场文书
详解Apache SkyWalking 告警配置指南
2021/04/22 Servers
Pyhton爬虫知识之正则表达式详解
2022/04/01 Python