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

在使用 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关联数组使用技巧,希望对大家的学习有所帮助。

(0)

相关推荐

  • thinkPHP中多维数组的遍历方法

    本文实例讲述了thinkPHP中多维数组的遍历方法.分享给大家供大家参考,具体如下: $drug=array( 'ACEI'=>array(array('ch_name'=>'我们','en_name'=>'captopril'),array('ch_name'=>'脚本下载','en_name'=>'enalapril'), array('ch_name'=>'赖诺普利','en_name'=>'lisinopril')), 'ARB'=>array(ar

  • php实现遍历多维数组的方法

    本文实例讲述了php实现遍历多维数组的方法.分享给大家供大家参考,具体如下: $a=array('fruits'=>array('a'=>'orange','b'=>'grape',c=>'apple'), 'numbers'=>array(1,2,3,4,5,6), 'holes'=>array('first',5=>'second','third') ); //第一种: foreach($a as $list=>$things){ if(is_array

  • PHP多维数组转一维数组的简单实现方法

    本文实例讲述了PHP多维数组转一维数组的简单实现方法.分享给大家供大家参考,具体如下: php语言本身没有将多维数组转为一维数组的函数,但是我们可以自己写一个php函数来实现将多维转一维的功能. 运用了递归,简单粗暴,整个函数体9行代码就实现了该功能,php源码如下: $multi = array( array( array( 'wo', 'shi' ), 'php' ), 'cheng', array( array( 'xu', 'yuan', ) ), '!' ); $multi = arr

  • PHP中对数组的一些常用的增、删、插操作函数总结

    有时候我们需要扩展一个数组,或者删掉数组的一部分,PHP为扩展和缩小数组提供了一些函数.对于那些希望模仿各种队列实现(FIFO.LIFO)的程序员来说,这些函数可以提供便利.顾名思义,从这些函数的函数名(push.pop.shift和unshift)就清楚地反映出其作用. PS:传统的队列是一种数据结构,删除元素与加入元素的顺序相同,就称为先进先出,或FIFO.相反,栈是另外一种数据结构,其中删除元素的顺序与加入时的顺序相反,这成为后进先出,或LIFO. 在数组头添加元素 array_unshi

  • 详解PHP对数组的定义以及数组的创建方法

    传统上把数组(array)定义为一组有某种共同特性的元素,这里的共同特性包括相似性(车模.棒球队.水果类型等)和类型(例如所有元素都是字符串或整数)等,每个元素由一个特殊的标识符来区分,这称为健(key).请注意,上面这句话中的传统上一词,因为现在可以摒弃这种定义,数组结构中可以包括完全无关的元素.PHP则更进一步,数组中的元素甚至可以不属于同一种类型.例如,一个数组可能包含州名.邮政编码.考试成绩或扑克牌等元素. 每个实体包含两个项:前面提到的健(key)和值(value).可以通过查询键来获

  • PHP中的数组处理函数实例总结

    本文实例总结了PHP中的数组处理函数.分享给大家供大家参考,具体如下: <?php //改变数组键的大小写 $arr1=array("a"=>"Lamp","db"=>"database","LANGUAGE"=>"PHP"); print_r(array_change_key_case($arr1,CASE_UPPER)); echo "<br/

  • PHP按指定键值对二维数组进行排序的方法

    本文实例讲述了PHP按指定键值对二维数组进行排序的方法.分享给大家供大家参考,具体如下: 问题: 有数组: 复制代码 代码如下: array(0=>array('id'=>1,'price'=>50),1=>array('id'=>2,'price'=>60)); 要求根据数组的price这个字段进行排序. 实现代码如下: <?php $array[] = array('id'=>1,'price'=>50); $array[] = array('id

  • php删除数组中重复元素的方法

    几种php删除数组元素方法在很多情况下我们的数组会出现重复情况,那我们删除数组中一些重复的内容怎么办,这些元素必须保持他唯一,所以就想办法来删除它们,下面利用了遍历查询来删除重复数组元素的几种方法. 方法一.完整删除重复数组实例-----删除数组中的一个元素 function array_remove_value(&$arr, $var){ foreach ($arr as $key => $value) { if (is_array($value)) { array_remove_valu

  • PHP多维数组遍历方法(2种实现方法)

    本文实例讲述了PHP多维数组遍历方法.分享给大家供大家参考,具体如下: 方法一: $a=array('fruits'=>array('a'=>'orange', 'b'=>'grape',c=>'apple'), 'numbers'=>array(1,2,3,4,5,6), 'holes'=>array('first',5=>'second','third') ); foreach($a as $list=>$things){ if(is_array($th

  • PHP数组去重比较快的实现方式

    概述 使用PHP的array_unique()函数允许你传递一个数组,然后移除重复的值,返回一个拥有唯一值的数组.这个函数大多数情况下都能工作得很好.但是,如果你尝试在一个大的数组里使用array_unique()函数,它会运行地慢一些. 有一个比较好而且更快的函数array_flip()来替代使用array_unique()函数来创建唯一的数组.这个魔法般的函数会交换数组里面每一个元素的键和值,因为键值必须唯一,因此,你会得到跟array_unique()函数一样的结果. 更快的方式实现PHP

  • PHP数组游标实现对数组的各种操作详解

    本文实例分析了PHP数组游标实现对数组的各种操作.分享给大家供大家参考,具体如下: 如何不用foreach实现对数组实现循环? 答:我们只需要模拟foreach就行了,数组在执行foreach循环的时候,是有一个游标指向当前数组循环到的值, 那如果我们能拿到这个游标,并且操作游标,使游标前进或者后退,那么我们就能不用foreach而实现循环数组 直接上代码,清晰直观: <?php $arr = array('你','若','安','好','便','是','晴','天'); //current()

随机推荐