`

第十课:PHP中遍历数组

 
阅读更多

第十课:PHP中遍历数组

来源:PHP中文社区

  上节课我们认识到了数组的优越性,这节课我们将学习怎样遍历数组中的数据。这种操作数组方法的应用是非常普遍的,我相信你会掌握得很好。

  比如你的网站存有大量的网址数据,你想在一个页面显示门户网站网址,这些数据已经保存到了一个数组变量$url里,那么怎样把这些数据一个一个输出到网页里呢?你还想象上节课那样一个一个echo输出吗?别忘了数据量是非常大而且数据的个数是经常变化的噢。PHP当然会有简单的办法,先看一个例子10-1:


<?php
 
$url = array('新浪'=>'www.sina.com',
                   '雅虎'=>'www.yahoo.com',
                   '网易'=>'www.163.com',
                   '腾讯'=>'www.qq.com',
                   '百度'=>'www.baidu.com'
               );
 
foreach (  $url as $link ) {
 
  echo $link.'<br><br>';
 
}
 
?>



 上面的代码中我们用到了foreach语句,这是一个用来遍历数组中数据的最简单有效的方法。

  foreach 仅能用于数组,当试图将其用于其它数据类型或者一个未初始化的变量时会产生错误。有两种语法,第二种比较次要但却是第一种的有用的扩展。


  第一种语法:

  foreach (array_expression as $value) statement

  这种格式遍历给定的 array_expression 数组,as 是关键词。每次循环中,当前单元的值被赋给 $value 并且数组内部的指针向前移一步(因此下一次循环中将会得到下一个单元)。statement是后续操作,如果有多个语句,你可以象上例那样采用大括号包含。

  上例中,我们循环读取数组$url中的每个单元,并且每次都把该单元的值赋值给变量$link,再echo打印输出这个$link的值,然后再进行下一次循环直到数组中不再有数据。

  你动手试了吗?如果你试了,看到输出结果是不是觉得很有趣呢?我知道一会儿你就又有疑问了:为什么没有“新浪”“网易”这样的站名呢?要怎样做才能得到呢?

  在$url数组定义中,“新浪”“网易”等都是作的键名而不是数组的值,我们的第一种语法只是循环取得数组中每个值。如果要得到数组的键名,可以采用第二种语法:

  第二种语法:

  foreach (array_expression as $key => $value) statement

  第二种格式做同样的事,只除了当前单元的键值也会在每次循环中被赋给变量 $key。

  例如10-2:

<?php
 
$url = array('新浪'=>'www.sina.com',
                   '雅虎'=>'www.yahoo.com',
                   '网易'=>'www.163.com',
                   '腾讯'=>'www.qq.com',
                   '百度'=>'www.baidu.com'
               );
 
foreach (  $url as $site => $link ) {
 
  echo "<a href=http://$link>$site</a><br><br>";
 
}
 
?>
 $site得到键值(如“新浪”),$link得到该单元的值(如“www.sina.com”),我在中间夹了一些HTML代码,相信你会看懂的。下面我再加点东西你能看懂吗?例10-3:


<?php
 
$url = array('新浪'=>'www.sina.com',
                   '雅虎'=>'www.yahoo.com',
                   '网易'=>'www.163.com',
                   '腾讯'=>'www.qq.com',
                   '百度'=>'www.baidu.com'
               );
 
$n = 0;
 
foreach (  $url as $site => $link ) {
 
  ++$n ;
 
  echo "第 $n  名:<a href=http://$link>$site</a><br><br>";
 
}
 
?>



注:当 foreach 开始执行时,数组内部的指针会自动指向第一个单元。这意味着不需要在 foreach 循环之前调用 reset()。

注:此外注意 foreach 所操作的是指定数组的一个拷贝,而不是该数组本身。因此即使有 each() 的构造,原数组指针也没有变,数组单元的值也不受影响。

注:foreach 不支持用“@”来禁止错误信息的能力。


分享到:
评论

相关推荐

    PHP中遍历数组的三种常用方法实例分析

    本文实例讲述了PHP中遍历数组的三种常用方法。分享给大家供大家参考,具体如下: 在PHP中操作最多的数据估计也就是数组了,有着效率高、速度快、存储方便的特点。 PHP中遍历数组有三种常用的方法: 1、for循环,...

    Vue中遍历数组的新方法实例详解

    主要介绍了Vue中遍历数组的新方法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

    Lua中遍历数组和table的4种方法

    主要介绍了Lua中遍历数组和table的4种方法,本文讲解了使用for遍历、迭代器的方式遍历等方法,同时提供一个复杂table的的遍历方法,需要的朋友可以参考下

    Java中遍历数组使用foreach循环还是for循环?

    主要介绍了Java中遍历数组使用foreach循环还是for循环?本文着重讲解for语句的语法并给出使用实例,同时总结出尽量使用foreach语句遍历数组,需要的朋友可以参考下

    python同时遍历数组的索引和值的实例

    今天小编就为大家分享一篇python同时遍历数组的索引和值的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    PHP100视频教程 6:PHP数组的创建修改应用.rar

    软件介绍 1、创建和修改数组 / 多维数组 2、数组与数组的函数 3、使用foreach 遍历数组 ...遍历数组很多种方法,可以使用 For循环,while循环,最巧妙的 一种遍历数组foreach给我们带来了跟多方便

    【基础篇】第11篇:PHP代码审计笔记--变量覆盖漏洞1

    源自:http://php.net/manual/zh/security.globals.php0×02 $导致的变量覆盖问题使用foreach来遍历数组中的值

    leetcode答案-leetcode:leetcode

    遍历数组中的每个元素x,查找target-x; 代码略; 时间复杂度 O(n2) ,空间复杂度O(1) 方法二:遍历哈希表 遍历数组 中的每个元素x,索引i,判断map中是否存在 target-x 的 值,不存在就将元素及索引添加到map中, ...

    C#使用foreach循环遍历数组完整实例

    本文实例讲述了C#使用foreach循环遍历数组的方法。分享给大家供大家参考,具体如下: using System; using System.Collections.Generic;... 第一种方法. 声明并分配元素大小. int[] Myint = new int[30]; Myi

    历数太阳到山计算法.doc

    历数太阳到山计算法.doc

    PHP遍历数组的几种方法

    PHP中遍历数组有三种常用的方法: 一、使用for语句循环遍历数组; 二、使用foreach语句遍历数组; 三、联合使用list()、each()和while循环遍历数组。 这三种方法中效率最高的是使用foreach语句遍历数组。从PHP4开始...

    jquery删除数组中重复元素

    话不多说,下面就跟着小编来看下利用jquery实现删除数组中重复元素的具体...遍历数组元素: for(var i=0;i&lt;arr.length;i++) {  var items=arr[i];  //判断元素是否存在于new_arr中,如果不存在则插入到new_arr的

    php遍历数组的4种方法总结

    在php中可以用来遍历数组的函数有很多,如有:for语句、list、each、foreach这四个函数,这也是在php中遍历数组的几个主要的函数,下面我来给大家介绍。 foreach遍历数组 我们在运用数组时,常常要遍历数组并获得...

    合并两个有序数组1

    示例:输入:输出:[1,2,2,3,5,6]解题思路:牺牲空间,创建额外一个数组进行最终顺序合并数组存放首先同时遍历数组 1 和数组 2数组 1 和数组 2 中

    C语言 数组指针详解及示例代码

    定义数组时,要给出数组名和数组长度,数组名可以认为是一个指针,它指向数组的第 0 个元素。在C语言中,我们将第 0 个元素的地址称为数组的首地址。以上面的数组为例,下图是 arr 的指向: 下面的例子演示了如何以...

    118、基51单片机万年历数码管显示电路图及程序元件清单

    这是基于51单片机的万年历数码管显示设计,包含了电路图源文件(Altiumdesigner软件打开)、C语言程序源代码(keil软件打开)、元件清单(excel表格打开)。 本资源适合人群: 单片机爱好者、电子类专业学生、电子...

Global site tag (gtag.js) - Google Analytics