5.5 处理数组元素和键值位置
PHP的每个数组内部均会有一个指针指向当前元素。这里所谓的指针,可以把它理解成程序即将要处理的元素所在的位置。处理数组元素和键值(索引)的位置,就是获取数组某个位置上的元素,或获取该元素后,将该指针移动到的其他位置。PHP中,处理数组元素和键值位置的函数主要有以下几个。
·current():返回数组的当前元素,不移动当前指针位置。
·next():返回当前元素的下一个元素的值,并将指针向后移动一位,下一个元素不存在时,返回FALSE。
·prev():返回当前元素的上一个元素的值,并将指针向前移动一位,上一个元素不存在时,返回FALSE。
·end():返回数组的最后一个元素的值。
图5-8示意说明了这些函数在某数组中和元素的对应关系。
图5-8 位置处理函数和数组元素的对应关系
如图5-8所示,假如键值为1的元素是当前(current)元素,那么调用函数next,就会返回键值为2的元素,同时当前(current)指针移至位置[2],这意味着键值为2的元素成为当前元素。代码5-10演示了这些函数的用法。
注意 图5.8示意并不表示数组中有prev、next和end指针,该图只是说明函数和元素的对应关系,数组中只有一个指向当前元素的指针。
代码5-10 位置处理函数的用法5-10.php
01 <?php 02 $planet = array( 03 'Earth', 04 'Venus', 05 'Mars', 06 'Jupiter', 07 'Saturn' 08 ); // 定义数组$planet 09 10 $pos = current($planet); // 此时$pos=Earth 11 12 echo 'pos1='.$pos; 13 echo '<br/>'; 14 echo '<br/>'; 15 16 $pos = next($planet); // 此时$pos=Venus 17 echo 'pos2='.$pos; 18 echo '<br/>'; 19 echo '<br/>'; 20 21 $pos = current($planet); // 此时$pos=Venus 22 echo 'pos3='.$pos; 23 echo '<br/>'; 24 echo '<br/>'; 25 26 $pos = prev($planet); // 此时$pos=Earth 27 echo 'pos4='.$pos; 28 echo '<br/>'; 29 echo '<br/>'; 30 31 $pos = end($planet); // 此时$pos=Saturn 32 echo 'pos5='.$pos; 33 echo '<br/>'; 34 echo '<br/>'; 35 36 $pos = current($planet); // 此时$pos=Saturn 37 echo 'pos6='.$pos; 38 ?>
【代码解析】代码第02~08行先定义一个数组$planet,第10行使用current()获取数组的当前元素,刚创建好的数组当前元素是第一个元素。第16行使用next()函数又往后移动一个位置,第26行使用prev()往前移动一个位置,第31行直接用end()函数取最后一个位置的元素。这段代码的执行结果如图5-9所示。
图5-9 使用数组元素位置和键值处理函数