5.1 建立数组的方法
在第2章介绍数据类型时,已经介绍过建立数组的方法。本节将对建立数组的方法做进一步的说明。
5.1.1 使用array()函数新建数组
使用PHP的array()语言结构可以创建一个数组,例如代码如下。
$ms_office = array( “word ”, ”excel ”, ”outlook ”, ”access ”);
上述代码创建了一个名叫$ms_office的数组,它包含4个单元,每个单元存储1个值,这些值是word、excel、outlook和access,这些值也被称为数组元素。注意,这里的array()不是函数,它只是PHP的语言结构。
提示 可以通过数组索引来访问数组元素,数组元素的索引默认从0开始。例如要访问数组$ms_office的第1个元素,可以使用$ms_office[0],以此类推,可以访问该数组中的其他元素。
数组的索引又叫“键值”或者“下标”。使用“=>”运算符,可以为数组指定索引和值。它的语法格式是“索引=>值”,每对“索引=>值”之间使用逗号“,”分开。如下代码即使用“=>”为数组指定索引和值。
$ms_office = array( 0=>'word' 1=>'excel', 2=>'outlook', 3=>'access');
这行代码指定数组的索引是整数。数组的索引还可以是字符串,用字符串做索引的数组叫做“关联数组”。如下代码指定数组元素的索引为字符串。
$ms_office = array( 'wd'=>'word', 'ec'=>'excel', 'ol'=>'outlook', 'ac'=>'access');
譬如此时要访问数组元素“access”,可以使用索引'ac',即通过$ms_office['ac']来访问数组元素“access”。如果省略指定索引,PHP会为数组产生从0开始的整数索引。如果索引是整数,则下一个产生的索引是当前最大整数索引值加1,例如代码5-1。
代码5-1 为数组元素指定索引5-1.php
01 <?php 02 $ms_office = array( 03 0=>'word', 04 3=>'excel', 05 'outlook', 06 'access' 07 ); 08 ?>
【代码解析】代码第03行指定元素“word”的索引为0,但接着第4行指定元素“excel”的索引为3,因为此时最大的索引值是3,所以,元素“outlook”的索引为当前最大索引值加1,即4。同理,元素“access”的索引值为5。
使用赋值运算符“=”,可以将一个数组复制到另一个数组,此时两个数组具有相同的索引及其对应的值,例如如下代码。
$ms_office = array(0=>'word',1=>'excel',2=>'outlook',3=>'access'); $arr_tmp = $ms_office;
此时,数组$arr_tmp具有了和$ms_office完全相同的索引和数组元素。通过$arr_tmp[1]可以取得元素“excel”。
5.1.2 使用变量建立数组
使用compact()函数,可以把单个变量或多个变量,甚至数组,添加为数组的成员,这些数组成员的键名是变量的变量名,值是这些变量的值。compact()函数的参数是要添加入数组的变量的变量名。如下代码演示了compact()函数的使用方法。
<?php // 创建变量 $number = 18; $string = " 字符串"; $array = array("boy","girl"); // 使用compact() 函数创建新数组 $newArray = compact("number","string","array"); // 显示新数组 print_r($newArray); ?>
注意 compact()函数的参数是变量的变量名,即“$”符号后的部分。如果compact()的参数中出现了非变量名的字符串,那么这个参数将是无效的。
在实际应用中,当一个文档中出现了大量的变量,同时要对这些变量进行排序等操作时,就可以使用compact()函数,把这些变量使用数组统一管理;在操作完成后,可以使用extract()函数还原compact()函数的操作,继续在程序中使用这些变量。
5.1.3 使用两个数组创建一个数组
使用array_combine()函数,可以把两个数组合并为一个数组,但不是把两个数组的成员相加,而是使用第1个数组作为新数组的索引,另一个数组作为新数组的值。array_combine()函数的使用方法如下。
<?php // 定义二个数组 $keys = array(1,2,3,4); $values = array("red","green","blue","yellow"); // 使用array_combine() 创建新数组 $newArray = array_combine($keys,$values); // 显示新数组 print_r($newArray); ?>
注意 作为array_combine()函数的两个数组,要拥有相同的数组成员,否则会导致程序错误。