foreach

PHP代码:
  1. <?php
  2.  
  3. $url = array( '新浪' =>'www.sina.com' ,
  4.                    '雅虎' =>'www.yahoo.com' ,
  5.                    '网易' =>'www.163.com' ,
  6.                    '腾讯' =>'www.qq.com' ,
  7.                    '百度' =>'www.baidu.com'
  8.                ) ;
  9.  
  10. foreach (   $url as $link ) {
  11.  
  12.   echo$link .'<br><br>' ;
  13.  
  14. }
  15.  
  16. ?>

  上面的代码中我们用到了 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代码:
  1. <?php
  2.  
  3. $url = array( '新浪' =>'www.sina.com' ,
  4.                    '雅虎' =>'www.yahoo.com' ,
  5.                    '网易' =>'www.163.com' ,
  6.                    '腾讯' =>'www.qq.com' ,
  7.                    '百度' =>'www.baidu.com'
  8.                ) ;
  9.  
  10. foreach (   $url as $site => $link ) {
  11.  
  12.   echo"<a href=http://$link>$site</a><br><br>" ;
  13.  
  14. }
  15.  
  16. ?>

  $site 得到键值(如“新浪 ”),$link 得到该单元的值(如“www.sina.com ”),我在中间夹了一些HTML代码,相信你会看懂的。下面我再加点东西你能看懂吗?例10-3:

PHP代码:
  1. <?php
  2.  
  3. $url = array( '新浪' =>'www.sina.com' ,
  4.                    '雅虎' =>'www.yahoo.com' ,
  5.                    '网易' =>'www.163.com' ,
  6.                    '腾讯' =>'www.qq.com' ,
  7.                    '百度' =>'www.baidu.com'
  8.                ) ;
  9.  
  10.  ;
  11.  
  12. foreach (   $url as $site => $link ) {
  13.  
  14.   ++$n ;
  15.  
  16.   echo"第 $n  名:<a href=http://$link>$site</a><br><br>" ;
  17.  
  18. }
  19.  
  20. ?>

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

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

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

PHP遍历数组的更多相关文章

  1. *使用while循环遍历数组创建索引和自增索引值

    package com.chongrui.test;/* *使用while循环遍历数组 *  *  * */public class test {    public static void main ...

  2. nodejs 遍历数组的两种方法

    var array = [1,2,3]; array.forEach(function(v,i,a){ console.log(v); console.log(i); console.log(a); ...

  3. 原生js使用forEach()与jquery使用each遍历数组,return false 的区别

    原生js使用forEach()与jquery使用each()遍历数组,return false 的区别: 1.使用each()遍历数组a,如下: var a=[20,21,22,23,24]; $.e ...

  4. js中数组遍历for与for in区别(强烈建议不要使用for in遍历数组)

    js中遍历数组的有两种方式 var array=['a'] //标准的for循环 for(var i=1;i<array.length;i++){ alert(array[i]) } //for ...

  5. 以forin的方式遍历数组时进行删除操作的注意点

    今天在修改某项需求的时候,需要在遍历的时候将匹配项移除掉,采用的时forin的方式遍历,然后运行的时候却crash掉了 for (NSString*str in self.btnArray) { if ...

  6. 使用for循环遍历数组

    package review20140419;/* * 遍历数组 */public abstract class Test1 {    //程序入口    public static void mai ...

  7. php 中遍历数组时使用引用出现的问题

    今天在使用foreach遍历数组时发现,当使用&时会出现问题: $arr = array( array('id' => 100, 'error'=> 'aa'), array('i ...

  8. Java:JSTL遍历数组,List,Set,Map

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  9. js遍历数组的错误方法

    for (var index in myArray) { // don't actually do this console.log(myArray[index]); } 缺点: 数组的索引值inde ...

  10. jquery 遍历 数组1

    使用了jquery有段时间了,整理下jquery中的遍历问题. 1.jquery 遍历对象 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Tr ...

随机推荐

  1. [ActionScript 3.0] AS3.0 调试出现安全沙箱冲突错误解决办法

    提示 *** 安全沙箱冲突 ***到 http://api.map.baidu.com/telematics/v3/weather?location=%E6%88%90%E9%83%BD&ou ...

  2. JSP之邮箱检验

    首先创建Email类继承Serializable接口以启用其序列化功能,而序列化又是为了保持版本的兼容性,即在版本升级时反序列化仍保持对象的唯一性.序列化接口没有方法或字段,仅用于标识可序列化的语义. ...

  3. struts2 标签的使用之一 s:if(遍历中s:if如何用等)

    http://blog.csdn.net/chinajust/article/details/3922718

  4. PHP自学之路-----javascript基础入门

    Javascript概述: Javascript是基于对象和事件的脚本语言.特点; 1.安全性(不允许直接访问本地硬盘),它可以做的就是信息的动态交互. 2.跨平台性. JavaScript与HTML ...

  5. Magicodes.WeiChat——使用OAuth 2.0获取微信用户信息

    使用Magicodes.WeiChat,可以很方便的获取到微信用户的信息.在使用OAuth 2.0之前,你先需要做以下操作: 1)在开发者中心修改[网页授权获取用户基本信息],在弹出的界面输入自己的根 ...

  6. 图书管理系统 (c语言实现) (全部代码)

    直接上代码不解释 #include <stdio.h> #include <stdlib.h> #include <string.h> #define AVAILA ...

  7. CPU, PSU, SPU - Oracle Critical Patch Update Terminology Update

    It all started in January 2005 with Critical Patch Updates (CPU).  Then Patch Set Updates (PSU) were ...

  8. 10大必备的Intellij插件,大幅提高你的工作效率

    转自: https://blog.csdn.net/qq1404510094/article/details/80379375 1. .ignore 生成各种ignore文件,一键创建git igno ...

  9. 2018.4.23-ml笔记(线性回归、梯度下降)

    线性回归:找到最合适的一条线来最好的拟合我们的数据点. hθ(x) = θixi=θTx    θ被称之为权重参数    θ0为拟合参数 对每个样本yi=θTxi + εi    误差ε是独立并且具有 ...

  10. CentOS配置通过DHCP的方式动态获取IP

    修改/etc/sysconfig/network NETWORKING=yes 修改/etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 ONBO ...