5.2 输出数组元素的方法
在实际开发中,经常要访问数组的值。如果每次都按数组索引来取数值元素,会非常麻烦。在PHP中可以通过各种循环来快速访问数组元素。本节就介绍常用的for和foreach。
5.2.1 使用for循环语句输出数组元素
对于一个按整数顺序索引的数组,可以通过for循环语句来依次访问数组元素,例如代码5-2。
代码5-2 使用for循环来显示数组元素5-2.php
01 <?php 02 $ms_office = array( 03 'word', 04 'excel', 05 'outlook', 06 'access' 07 ); // 定义数组$ms_office 08 09 for($i=0; $i<4; $i++) // 从0 到3 的循环 10 { 11 echo " 数组第 ".($i+1)." 个元素是:"; 12 echo $ms_office[$i]; // 输出索引为i 的数组值 13 echo "<br/>"; 14 echo "<br/>"; 15 } 16 ?>
图5-1 用for循环访问数组元素
【代码解析】代码第02~07行定义了一个数组,没有指定它的索引,所以使用默认的整数形式。所以在第12行可以使用$ms_office[$i]的形式来获取数组元素。第9行是一个for循环,$i的值从0开始,一直到3。这段代码输出的结果如图5-1所示。
5.2.2 使用foreach循环语句输出数组元素
PHP还专门为数组提供了一个循环语句,即foreach循环语句,语法结构如下。
foreach($array as $some_var) { statement }
其中,foreach和as都是PHP关键字。该语法结构的含义是:按顺序,每次将数组$array中的一个元素存入变量$some_var后执行statement语句,然后取下一个元素执行statement语句,依次下去,直到所有元素都取到。和for循环语句一样,statement可以是单条语句,也可以是一个语句块。代码5-2可以改写成代码5-3的形式,输出的结果和代码5-2完全一样。
代码5-3 使用foreach循环获取数组元素5-3.php
01 <?php 02 $ms_office = array( 03 'word', 04 'excel', 05 'outlook', 06 'access' 07 ); // 定义数组$ms_office 08 09 foreach($ms_office as $software) // 使用foreach 遍历数组$ms_office 的值 10 { 11 echo $software; // 输出数组$ms_office 中的值 12 echo "<br/>"; 13 echo "<br/>"; 14 } 15 ?>
【代码解析】代码第09~14行将数组的每个元素依次存储在变量$software中,然后打印出来。
foreach循环不仅可以获取数组元素,还可以获取索引,例如代码5-4。
代码5-4 使用foreach循环获取数组元素及其索引5-5.php
01 <?php 02 $ms_office = array( 03 'wd'=>'word', 04 'ec'=>'excel', 05 'ol'=>'outlook', 06 'ac'=>'access' 07 ); // 定义数组$ms_office 08 09 foreach($ms_office as $key=>$value) // 遍历数组$ms_office 10 { 11 echo $key.": ".$value; // 输出数组中$ms_office 的索引和元素 12 echo "<br/>"; 13 echo "<br/>"; 14 } 15 ?>
图5-2 用foreach循环取数组的索引和值
【代码解析】这段代码中,每次foreach循环都会将数组的一个索引赋给变量$key,将其对应的值赋给变量$value。该代码输出结果如图5-2所示。
5.2.3 使用函数print_r()显示数组元素
有时,为了在程序中查看一个数组的结构(即索引和值的对应关系),需要将数组结构显示到页面上。这可以通过PHP的print_r()函数实现。代码5-5是使用函数print_r()的示例程序。
代码5-5 使用函数print_r输出数组5-5.php
01 <?php 02 $ms_office = array( 03 'word', 04 'excel', 05 'outlook', 06 'access' 07 ); // 定义数组$ms_office 08 09 print_r($ms_office); // 输出数组$ms_office 的结构 10 ?>
【代码解析】代码第09行没有再用任何循环语句,而是只用了一个print_r()函数。这段代码输出结果如图5-3所示。
如果在上述代码中调用print_r()函数之前加入输出标签“<pre>”的代码,即加入语句“echo"<pre>";”,就会得到格式更明了的数组结构,例如代码5-6。
代码5-6 使用函数print_r加“<pre>”输出数组5-6.php
01 <?php 02 $ms_office = array( 03 'word', 04 'excel', 05 'outlook', 06 'access' 07 ); // 定义数组$ms_office 08 09 echo "<pre>"; 10 print_r($ms_office); // 有序输出数组$ms_office 的结构 11 ?>
【代码解析】代码第09行的HTML标签<pre>可定义预格式化的文本。“<pre>”和“</pre>”标签,可以把它们之间文本中的空格、回车、换行、Tab键表现出来,即按照文本原先的布局显示。在代码5-6中,调用函数print_r()之后,也可以加上输出结束标签“</pre>”的代码。这段代码输出结果如图5-4所示。
图5-3 使用print_r()输出数组(1)
图5-4 使用print_r()输出数组(2)