您的位置:首页 > 编程语言 > PHP开发

php一维数组遍历中常见的问题

2013-12-21 21:28 134 查看
(1)foreach()是一个用来遍历数组中数据的最简单有效的方法。

 <?php 

  $colors = array('red','blue','green','yellow'); 

    foreach ($colors as $color) { 

    echo "Do you like $color? <br />"; 

  } 

  ?>

显示结果:

       Do you like red?

       Do you like blue?

       Do you like green?

       Do you like yellow?

       

 2). while() 

 while() 通常和 list(),each()配合使用。

<?php 

$colors = array('red','blue','green','yellow'); 

 while(list($key,$val) = each($colors)) { 

 echo "Other list of $val.<br />"; 

 }  

?>

显示结果:

Other list of red.

Other list of blue.

Other list of green.

Other list of yellow.

(3.) for() 

<?php 

$arr = array ("0" => "zero","1" => "one","2" => "two"); 

  for ($i = 0;$i < count($arr); $i++) { 

  $str = $arr[$i]; 

  echo "the number is $str.<br />"; 



?>

显示结果:

the number is zero.

the number is one.

the number is two.

(4) key() 返回数组中当前单元的键名。

 <?php 

$capitals = array("Ohio" => "Columbus","Towa" => "Des Moines","Arizona" => "Phoenix");      

echo "<p>Can you name the capitals of these states?</p>"; 

while($key = key($capitals)) { 

echo $key."<br />"; 

 next($capitals); 

//每个key()调用不会推进指针。为此要使用next()函数 



?>

显示结果:

Can you name the capitals of these states?

Ohio

Towa

Arizona

(5)reset() — 将数组的内部指针指向第一个单元

   reset()函数用来将input_array的指针设置回数组的开始位置。如果需要在一个脚本中多次查看或处理同     一个数组,就经常使用这个函数,另外这个函数还常用于排序结束时。

<?php 

$colors = array('red','blue','green','yellow'); 

foreach ($colors as $color) { 

 echo "Do you like $color? <br />"; 



reset($colors); 

 

while(list($key,$val) = each($colors)) { 

echo "$key => $val<br />"; 



?>

显示结果:

Do you like red?

Do you like blue?

Do you like green?

Do you like yellow?

0 => red

1 => blue

2 => green

3 => yellow

(6)

each()函数返回输入数组当前键/值对,并将指针推进一个位置。返回的数组包含四个键,键0和key包含键名,而键1和value包含相应的数据。如果执行each()前指针位于数组末尾,则返回FALSE。

<?php 

$capitals = array("Ohio" => "Columbus",  "Towa" => "Des Moines",    "Arizona" => "Phoenix"); 

$s1 = each($capitals) ; 

print_r($s1); 

?>

显示结果:

Array ( [1] => Columbus  [value] => Columbus     [0] => Ohio     [key] => Ohio ) 

(7)

current(),next(),prev(),end() mixed current(array target_array)

current()函数返回位于target_array数组当前指针位置的数组值。与next()、prev()、和end()函数不同,current()不移动指针。

next()函数返回紧接着放在当前数组指针的下一个位置的数组值。

prev()函数返回位于当前指针的前一个位置的数组值,如果指针本来就位于数组的第一个位置,则返回FALSE。

end()函数将指针移向target_array的最后一个位置,并返回最后一个元素。

<?php 

$fruits = array("apple","orange","banana"); 

 

$fruit = current($fruits);    //return "apple" 

echo $fruit."<br />"; 

  

$fruit = next($fruits);        //return "orange" 

echo $fruit."<br />"; 

  $fruit = prev($fruits);        //return "apple" 

echo $fruit."<br />"; 

  

$fruit = end($fruits);        //return "banana" 

echo $fruit."<br />"; 

?>

显示结果:

apple

orange

apple

banana
(8)

//执行mysql_query()后生成的是结果集需要用mysql_fetch_array()进行遍历输出

$query=mysql_query($sql);   

while($row=mysql_fetch_array($query)){

?>

  <tr>

    <td><?php echo $row['id']?></td>

    <td><?php echo $row['name']?></td>

    <td><?php echo $row['content']?></td>

  </tr>

注释:

经过反复多次测试,结果表明,对于遍历同样一个数组,foreach速度最快,最慢的则是while。从原理上来看,foreach是对数组副本进行操作(通过拷贝数组),而while则通过移动数组内部指标进行操作,一般逻辑下认为,while应该比foreach快(因为foreach在开始执行的时候首先把数组复制进去,而while直接移动内部指标。),但结果刚刚相反。原因应该是,foreach是PHP内部实现,而while是通用的循环结构。所以,在通常应用中foreach简单,而且效率高。在PHP5下,foreach还可以遍历类的属性。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息