大家都应该掌握的PHP关联数组使用技巧


Posted in PHP onDecember 25, 2015

在使用 PHP 进行开发的过程中,或早或晚,您会需要创建许多相似的变量,这时候你可以把数据作为元素存储在数组中。数组中的元素都有自己的 ID,因此可以方便地访问它们。
关联数组
关联数组,它的每个 ID 键都关联一个值。在存储有关具体命名的值的数据时,使用数值数组不是最好的做法。通过关联数组,我们可以把值作为键,并向它们赋值。
这里介绍10个操作PHP关联数组的技巧,熟练运用能帮助你提高开发效率。
1、添加数组元素
PHP是一种弱类型语言,这意味着你不需要显示声明一个数组及其大小,相反,你可以同时声明并填充数组。

$capitals = array( 
 'Alabama' => 'Montgomery', 
 'Alaska' => 'Juneau', 
 'Arizona' => 'Phoenix' 
);

额外的数组元素可以象下面这样追加:

$capitals['Arkansas'] = 'Little Rock';

如果你正在处理数字索引数组,你可能想使用显示命名的函数前置和追加元素,如array_push()和array_unshift()函数,但这些函数不能操作关联数组。
2、删除数组元素
如果要从数组中删除一个元素,请使用unset()函数,如:

unset($capitals['California']);

使用数字索引数组时,删除数组元素的办法更多,更灵活,可以使用array_shift()和array_pop()函数分别从数组的开头和末尾删除一个元素。
3、交换键和值
假设你想创建一个名叫$states的新数组,使用州府作为索引,使用州名作为关联值,使用array_flip()函数很容易完成这个任务。

$capitals = array( 
 'Alabama' => 'Montgomery', 
 'Alaska' => 'Juneau', 
 'Arizona' => 'Phoenix' 
); 
$states = array_flip($capitals); 
// $states = array( 
// 'Montgomery' => string 'Alabama', 
// 'Juneau'   => string 'Alaska', 
// 'Phoenix'  => string 'Arizona' 
// );

4、合并数组
假设前面的数组由一个基于Web的“FlashCard”服务使用,你想提供一种方法测试学生对美国各州首府的掌握情况,你可以使用array_merge()函数合并包含州和首府的数组。

$stateCapitals = array( 
 'Alabama' => 'Montgomery', 
 'Alaska' => 'Juneau', 
 'Arizona' => 'Phoenix' 
); 
$countryCapitals = array ( 
 'Australia' => 'Canberra', 
 'Austria'  => 'Vienna', 
 'Algeria'  => 'Algiers' 
); 
$capitals = array_merge($stateCapitals, $countryCapitals);

5、编辑数组值
假设在数组中的数据包含大小写错误,在插入到数据库之前,你想纠正这些错误,你可以使用array_map()函数给每个数组元素应用一个回调。

function capitalize($element) 
{ 
 $element = strtolower($element); 
 return ucwords($element); 
} 
$capitals = array( 
 'Alabama' => 'montGoMEry', 
 'Alaska' => 'Juneau', 
 'Arizona' => 'phoeniX' 
); 
$capitals = array_map("capitalize", $capitals);

6、按键对数组排序
FlashCard程序常常使用各种排序,如按字母顺序排序,你可以使用ksort()函数按键对关联数组进行排序。

$capitals = array( 
 'Arizona' => 'Phoenix', 
 'Alaska' => 'Juneau', 
 'Alabama' => 'Montgomery' 
); 
ksort($capitals);

因为数组是通过参数传递给ksort()函数的,意味着你不再需要将排序结果分配给另一个变量。
7、随机数组排序
在FlashCard程序中还涉及到另一种随机排序技术,这时你要使用shuffle()函数实现数组项目的随机排序。

$capitals = array( 
 'Arizona' => 'Phoenix', 
 'Alaska' => 'Juneau', 
 'Alabama' => 'Montgomery' 
); 
shuffle($capitals);

如果不需要打乱数组顺序,你只是想随机选择一个值,那么使用array_rand()函数即可。
8、确定键和值是否存在
你可以使用in_array()函数确定一个数组元素是否存在。

$capitals = array( 
 'Arizona' => 'Phoenix', 
 'Alaska' => 'Juneau', 
 'Alabama' => 'Montgomery' 
); 
if (in_array("Juneau", $capitals)) 
{ 
 echo "Exists!"; 
} else { 
 echo "Does not exist!"; 
}

很少有人知道这个函数也可以确定一个数组键是否存在,在这一点上,它和array_key_exists()函数的功能一样。

$capitals = array( 
 'Arizona' => 'Phoenix', 
 'Alaska' => 'Juneau', 
 'Alabama' => 'Montgomery' 
); 
if (array_key_exists("Alaska", $capitals)) 
{ 
 echo "Key exists!"; 
} else { 
 echo "Key does not exist!"; 
}

9、搜索数组
你可能想搜索数组资源,这样用户就可以方便地用一个特定的州府检索关联的州,可以通过array_search()函数实现数组搜索。

$capitals = array( 
 'Arizona' => 'Phoenix', 
 'Alaska' => 'Juneau', 
 'Alabama' => 'Montgomery' 
); 
$state = array_search('Juneau', $capitals); 
// $state = 'Alaska'

10、标准PHP库
标准PHP库(Standard PHP Library,SPL)为开发人员提供了许多数据结构,迭代器,接口,异常和其它以前PHP语言没有的功能,使用这些功能可以通过面向对象的语法遍历数组。

$capitals = array( 
 'Arizona' => 'Phoenix', 
 'Alaska' => 'Juneau', 
 'Alabama' => 'Montgomery' 
); 
$arrayObject = new ArrayObject($capitals); 
foreach ($arrayObject as $state => $capital) 
{ 
 printf("The capital of %s is %s<br />", $state, $capital); 
} 
// The capital of Arizona is Phoenix 
// The capital of Alaska is Juneau 
// The capital of Alabama is Montgomery

以上就是10个必须掌握的PHP关联数组使用技巧,希望对大家的学习有所帮助。

PHP 相关文章推荐
PHP4(windows版本)中的COM函数
Oct 09 PHP
php数组函数序列之next() - 移动数组内部指针到下一个元素的位置,并返回该元素值
Oct 31 PHP
关于PHP自动判断字符集并转码的详解
Jun 26 PHP
PHP IE中下载附件问题解决方法
Jan 07 PHP
修改ThinkPHP缓存为Memcache的方法
Jun 25 PHP
yii操作cookie实例简介
Jul 09 PHP
thinkphp浏览历史功能实现方法
Oct 29 PHP
理解php依赖注入和控制反转
May 11 PHP
PHP基于单例模式编写PDO类的方法
Sep 13 PHP
php使用curl下载指定大小的文件实例代码
Sep 30 PHP
thinkphp5.0自定义验证规则使用方法
Nov 16 PHP
使用Laravel中的查询构造器实现增删改查功能
Sep 03 PHP
[原创]PHP实现逐行删除文件右侧空格的方法
Dec 25 #PHP
PHP操作MySQL的mysql_fetch_* 函数的常见用法教程
Dec 25 #PHP
php通过淘宝API查询IP地址归属等信息
Dec 25 #PHP
php实现统计目录文件大小的函数
Dec 25 #PHP
通过PHP自带的服务器来查看正则匹配结果的方法
Dec 24 #PHP
在openSUSE42.1下编译安装PHP7 的方法
Dec 24 #PHP
在Mac OS上自行编译安装Apache服务器和PHP解释器
Dec 24 #PHP
You might like
php的一些小问题
2010/07/03 PHP
PHP函数preg_match_all正则表达式的基本使用详细解析
2013/08/31 PHP
php正则匹配文章中的远程图片地址并下载图片至本地
2015/09/29 PHP
PHP下SSL加密解密、验证、签名方法(很简单)
2020/06/28 PHP
google地图的路线实现代码
2009/08/20 Javascript
在一个浏览器里呈现所有浏览器测试结果的前端测试工具的思路
2010/03/02 Javascript
jquery 卷帘效果实现代码(不同方向)
2013/02/05 Javascript
指定区域的图片自动按比例缩小的js代码(防止页面被图片撑破)
2014/02/21 Javascript
jQuery中unwrap()方法用法实例
2015/01/16 Javascript
JavaScript中数据结构与算法(一):栈
2015/06/19 Javascript
javascript表单验证大全
2015/08/12 Javascript
JQuery中Ajax()的data参数类型实例分析
2015/12/15 Javascript
js原生方法被覆盖,从新赋值原生的方法
2018/01/02 Javascript
JS实现常见的查找、排序、去重算法示例
2018/05/21 Javascript
vue+element加入签名效果(移动端可用)
2019/06/17 Javascript
Vue组件跨层级获取组件操作
2020/07/27 Javascript
解决vue scoped scss 无效的问题
2020/09/04 Javascript
[47:52]DOTA2-DPC中国联赛正赛 iG vs LBZS BO3 第二场 3月4日
2021/03/11 DOTA
在服务器端实现无间断部署Python应用的教程
2015/04/16 Python
CentOS安装pillow报错的解决方法
2016/01/27 Python
python爬虫面试宝典(常见问题)
2018/03/02 Python
python 将list转成字符串,中间用符号分隔的方法
2018/10/23 Python
python制作填词游戏步骤详解
2019/05/05 Python
推荐WEB开发者最佳HTML5和CSS3代码生成器
2015/11/24 HTML / CSS
办公室文秘自我鉴定
2013/09/21 职场文书
手术室护士自我鉴定
2013/10/14 职场文书
婚礼答谢宴主持词
2014/03/14 职场文书
自我鉴定总结
2014/03/24 职场文书
庆七一活动总结
2014/08/27 职场文书
博士给导师的自荐信
2015/03/06 职场文书
2015年法制宣传月活动总结
2015/03/26 职场文书
中国合伙人观后感
2015/06/02 职场文书
2015年学校医务室工作总结
2015/07/20 职场文书
javascript遍历对象的五种方式实例代码
2021/10/24 Javascript
【海涛dota解说】海涛小满开黑4v5被破两路翻盘潮汐第一视角解说
2022/04/01 DOTA
Win11如何查看显卡型号 Win11查看显卡型号的方法
2022/08/14 数码科技