文章教程

7.4遍历数组

9/17/2020 9:40:31 PM 人评论 次浏览

7.4 遍历数组

所谓数组的遍历是要把数组中的变量值读取出来。下面讲述常见的遍历数组的方法。

7.4.1 遍历一维数字索引数组

下面讲解通过循环语句遍历一维数字索引数组。此案例中使用到for循环和foreach循环。

【例7.4】(实例文件:ch07\7.4.php)

  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/
DTD/xhtml1-transitional.dtd">
  <html xmlns="http://www.w3.org/1999/xhtml">
  <HEAD><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><h2>GoodHome房间类
型。</h2></HEAD>
  <BODY>
  <?php
    $roomtypes = array( '单床房','标准间','三床房','VIP套房');
    for ($i = 0; $i < 3; $i++){
       echo $roomtypes[$i]." (for循环)<br />";
    }
    foreach ($roomtypes as $room){
      echo $room."(foreach循环)<br />";
    }
  ?>
  </BODY>
  </HTML>

运行结果如图7-5所示。

image

图7-5 程序运行结果

【案例分析】

(1)for循环只进行了三次。

(2)foreach循环则列出了数组中所有数组元素。

7.4.2 遍历一维联合索引数组

下面遍历酒店房间类型为例对联合索引数组进行遍历。

【例7.5】(实例文件:ch07\7.5.php)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/
DTD/xhtml1-transitional.dtd">
  <html xmlns="http://www.w3.org/1999/xhtml">
  <HEAD><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><h2>GoodHome房间类
型。</h2></HEAD>
  <BODY>
  <?php
    $prices_per_day = array('单床房'=> 298,'标准间'=> 268,'三床房'=> 198,'VIP套房'=> 368);
    foreach ($prices_per_day as $price){
      echo $price."<br />";
    }
    foreach ($prices_per_day as $key => $value){
      echo $key.":".$value." 每天。<br />";
    }
    reset($prices_per_day);
    while ($element = each($prices_per_day)){
      echo $element['key']."\t";
    echo $element['value'];
    echo "<br />";
    }
    reset($prices_per_day);
    while (list($type, $price) = each($prices_per_day)){
    echo "$type - $price<br />";
    }
  ?>
  </BODY>
  </HTML>

运行结果如图7-6所示。

image

图7-6 程序运行结果

【案例分析】

(1)其中,foreach ($prices_per_day as $price){}遍历了数组元素,所以输出4个整型数字。而foreach ($prices_per_day as $key => $value){}则除了遍历了数组元素,还遍历了其所对应的关键字,如onebedroom是数组元素298的关键字。

(2)这段程序中使用了while循环,还用到了几个新的函数reset()、each()和list()。由于在前面的代码中,$prices_per_day已经被foreach循环遍历过,而内存中的实时元素为数组的最后一个元素。因此,如果想用while循环来遍历数组,就必须用reset()函数,把实时元素重新定义为数组的开头元素。each()则是用来遍历数组元素及其关键字的函数。list()则是把each()中的值分开赋值和输出的函数。

7.4.3 遍历多维数组

下面以使用多维数组编写房间类型为例进行遍历,具体操作步骤如下。

【例7.6】(实例文件:ch07\7.6.php)

  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/
DTD/xhtml1-transitional.dtd">
  <html xmlns="http://www.w3.org/1999/xhtml">
  <HEAD><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><h2>GoodHome房间类型
(多维数组)。</h2></HEAD>
  <BODY>
  <?php
    $roomtypes = array( array( 'type'=>'单床房',
                               'info'=>'此房间为单人单间。',
                 'price_per_day'=>298
                             ),
              array( 'type'=>'标准间',
                               'info'=>'此房间为两床标准配置。',
                 'price_per_day'=>268
                             ),
              array( 'type'=>'三床房',
                               'info'=>'此房间备有三张床',
                 'price_per_day'=>198
                             ),
              array( 'type'=>'VIP套房',
                               'info'=>'此房间为VIP两间内外套房',
                 'price_per_day'=>368
                             )
    );
    for ($row = 0; $row < 4; $row++){
      while (list($key, $value ) = each( $roomtypes[$row])){
          echo "$key:$value"."\t |";
    }
      echo '<br />';
    }
  ?>
  </BODY>
  </HTML>

运行结果如图7-7所示。

image

图7-7 程序运行结果

【案例分析】

(1)$roomtypes中的每个数组元素都是一个数组,而作为数组元素的数组又都有三个拥有键名的数组元素。

(2)使用for循环配合each()、list()函数来遍历数组元素。

教程类别