入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

谈一谈PHP中数组元素的遍历

创建时间:2017-10-10 投稿人: 浏览次数:201

PHP 中的数组实际上是一个有序映射。每个元素都是一个键值对(key=>value),在PHP的数组中,数组的key通常为整数或字符串,数组元素的value可以是整数、浮点数、字符串甚至另一个数组或对象。


. 当数组的键为连续键时,可以利用for循环来遍历该数组的元素:

代码示例:

<?php
    $numbers = range(1, 5);
    for ($i=0; $i <count($numbers) ; $i++) { 
        echo "the element is ".$numbers[$i]."<br/>";
    }
?>

显示结果:
这里写图片描述



. 当数组的键为非连续键时:
①使用 while() 和 list(),each()配合使用。
代码示例:

<?php 
    $arr= array("php","python","java","go"); 
    while(list($key,$val)= each($arr)) { 
      echo "This language element is $val.<br />"; 
    } 
?> 

显示结果:
这里写图片描述
注意:list()语言结构仅用于数字“键”的数组,并且要求数字“键”从0开始连续递增,关联数组并不能赋值,或者是既有数字索引又有关联索引,就会只取数组里面的数字索引元素。each()返回数组中当前的键/值对并将数组指针向前移动一步.


foreach( )则是更加常用的方法:
对于foreach( ),有以下两种语法,


 1. foreach (array_expression as $value)
        statement
 2. foreach (array_expression as $key => $value)
        statement 

第一种格式遍历给定的 array_expression 数组。每次循环中,当前单元的值被赋给 $value 并且数组内部的指针向前移一步(因此下一次循环中将会得到下一个单元)。 第二种格式做同样的事,只除了当前单元的键名也会在每次循环中被赋给变量 $key。

代码示例:

<?php
    $a = array("a"=>"f76g", 2=>"b", "c","d"=>"csd32");
    foreach ($a as $aa){ 
      echo "This element is $aa! <br />"; 
    } 
?>

显示结果:

这里写图片描述

代码示例:

<?php
    $a = array("a"=>"f76g", 2=>"b", "c","d"=>"csd32");
    foreach ($a as $key=>$value){ 
      echo "This element is $value! <br />"; 
    } 
?>

显示结果:
这里写图片描述

注意:当 foreach 开始执行时,数组内部的指针会自动指向第一个单元。这意味着不需要在 foreach 循环之前调用 reset()。
除非数组是被引用,foreach 所操作的是指定数组的一个拷贝,而不是该数组本身。foreach对数组指针有些副作用。除非对其重置,在 foreach 循环中或循环后都不要依赖数组指针的值。


③使用next( )函数和循环语句遍历

代码示例;

 <?php
    $colors = array("orange", "red", "yellow");
    $fruits = array("orange", "apple", "banana");
    $temp = array_combine($colors, $fruits);
    reset($temp);
    do{
        $key = key($temp);
        $value = current($temp);
        echo $key."&nbsp;==>&nbsp;".$value."<br/>";
    }while(next($temp));
?>

显示结果:
这里写图片描述

注意:
由于使用next( )函数返回数组下一个元素“值”,如果这个“值”为空,循环将不能继续执行下去,遍历有可能失败。因此,如果数组中的某个元素“值”为空,则不能用next( )函数遍历数组。

声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
  • 上一篇:没有了
  • 下一篇:没有了
未上传头像