`
isiqi
  • 浏览: 16496421 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

php foreach用法和实例

阅读更多

PHP 4 引入了 foreach 结构,和 Perl 以及其他语言很像。这只是一种遍历数组简便方法。foreach 仅能用于数组,当试图将其用于其它数据类型或者一个未初始化的变量时会产生错误。有两种语法,第二种比较次要但却是第一种的有用的扩展。

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

第一种格式遍历给定的 array_expression 数组。每次循环中,当前单元的值被赋给 $value 并且数组内部的指针向前移一步(因此下一次循环中将会得到下一个单元)。

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

先来看第一个语句,这个语句比较简单,array_expression指的是一个数组表达式,as $val语句将顺序取得该数组的值并保存到$val变量中,此种方法只能取得数组内的值,而不能取得数组的下标索引值。例如:

$myArray=array("1"=>"val1","2"=>"val2","3"=>"val3");
foreach($myArray as $val) {
print($val." ");
}

其结果会输出:val1 val2 val3


再来看看第二种格式,第二种格式除了能像第一种格式一样得到数组内元素的值外,还能得到元素的索引值,并保存到$key变量中,如果数组的索引值未经过人工设定,则返回系统默认的设定值,
看正面例子:

先看一个简单的一维数组:

$myArray=array("1"=>"val1","2"="val2","3"=>"val3");
foreach($myArray as $key=>$val) {
print($key."=>".$val.";");
}

该程序将出输出:1=>val1;2=>val2;3=>val3;,接下来我们再来看一个复杂一点的二维数组遍历,程序如下:

$myArray=array(
"1"=>array("11"=>"val11","12"=>"val12","13"=>"val13"),
"2"=>array("21"=>"val21","22"=>"val22","23"=>"val23"),
"3"=>array("31"=>"val31","32"=>"val32","33"=>"val33")
);
print("<ul>");
foreach($myArray as $key=>$val) {
print("<li>".$key."</li>");
if (is_array($val)) { //判断$val的值是否是一个数组,如果是,则进入下层遍历
print("<ul>");
foreach($val as $key=>$val) {
print("<li>".$key."=>".$val."</li>");
}
print("</ul>");
}
}
print("</ul>");

输出结果:

  • 1
    • 11=>val11
    • 12=>val12
    • 13=>val13
  • 2
    • 21=>val21
    • 22=>val22
    • 23=>val23
  • 3
    • 31=>val31
    • 32=>val32
    • 33=>val33

<ul> 和 <li>是 标签,作用是显示个实心小圆点和空心小圆点。
由于上面的是一个二维数组,在第一次遍历后所得到的$val值将是一个数组,所以我在遍历中加了一个判断,以便进行二层数组遍历。




再通过一个实例解惑

<?php
$a = array("1"=>"语文","2"=>"数学","3"=>"英语");
$b = array("1"=>"95","2"=>"99","3"=>"92");
foreach($a as $key=>$value){
echo $value;
echo $b[$key]."<br>";
}
?>

问题是为什么输出数组$b中的值要用$b[$key]而不是$b[$value]?

这是为什么呢?

$a = array("1"=>"语文","2"=>"数学","3"=>"英语");
上面这个和下面这个是完全一样的

$a[1]="语文";
$a[2]="数学"
$a[3]=“英语”

我们输出上面的数组是怎么输出的呢?

肯定是echo $a[1];

对不对?

如果没有疑问我们继续!!!!


------------------------------


简单说foreach

它的格式是这样的foreach(数组名 as 下标=>值)

下标也就是上面的$a[1],这里的1就是数组的下标!

到这你应该明白了,为什么是$a[$key]这样输出

你记住不管怎么变,数组的输出方法永远是$a[1],不会是$a['语文']




================================================================

foreach()有两种用法:
1: foreach(array_name as $value){
statement;
}
这里的array_name是你要遍历的数组名,每次循环中,array_name数组的当前元素的值被赋给$value,并且数组内部的下标向下移一步,也就是下次循环回得到下一个元素。


2:foreach(array_name as $key => $value){
statement;
}
这里跟第一种方法的区别就是多了个$key,也就是除了把当前元素的值赋给$value外,当前元素的键值也会在每次循环中被赋给变量$key。键值可以是下标值,也可以是字符串。比如book[0]=1中的“0”,book[id]="001"中的“id”.

分享到:
评论

相关推荐

    详解PHP中foreach的用法和实例

    foreach语句有两种形式:一种用于处理一维数组,另一种用于在遍历时同时获取数组元素的键和值。通过本文,您将学会如何在各种数组类型中使用foreach语句,包括一维普通数组、一维关联数组、二维普通数组以及二维关联...

    php实例文件下载更多例子

    2. **流程控制**:PHP提供了条件语句(如if...else, switch...case)和循环结构(如for, while, do...while, foreach),这些在实例中会被广泛运用,让你理解如何根据条件执行不同的代码块或重复执行某段代码。...

    PHP编程实例.rar

    通过这个实例,你可以理解PHP OOP的基本概念和用法。 实例30可能涉及PHP的会话管理。PHP使用`session_start()`启动会话,`$_SESSION`变量存储用户状态信息,实现跨页面的数据共享。这个实例可能教你如何在网站中...

    PHP foreach循环使用详解与实例代码

    ### foreach的高级用法 foreach也可以用于遍历多维数组。例如,如果有一个多维数组,foreach可以在一个嵌套循环中使用,先遍历外层数组,再遍历内层数组: ```php $s = array( array(1, 2), array(3, 4), array...

    smarty内置函数foreach用法实例

    Smarty是PHP开发中使用的一个模板引擎,它通过将逻辑层和表现层分离,使得开发人员能够轻松地创建易于管理和维护的Web应用程序。Smarty的核心功能之一是内置了一系列的模板函数,这些函数可以在模板文件中直接使用,...

    php邮件发送类phpmailer用法实例详解_.docx

    PHP 邮件发送类 PHPMailer 用法实例详解 在 PHP 开发中,发送邮件是一项非常重要的功能。 PHPMailer 是一个流行的 PHP 邮件发送类库,提供了灵活的邮件发送功能。在本文中,我们将详细介绍 PHPMailer 的用法实例,...

    PHP参考实例

    实例会教你怎么捕获和处理错误,以及使用try-catch结构处理异常。 10. **面向对象编程**:PHP5引入了全面的面向对象特性,包括类、对象、继承、封装和多态。实例会解释这些概念,并展示如何在实践中应用。 通过...

    PHP 开发实例完全剖析

    《PHP开发实例完全剖析》是一本专注于PHP编程实践的教程,旨在通过丰富的实例来帮助开发者深入理解和掌握PHP语言。PHP是一种广泛使用的开源脚本语言,尤其适用于Web开发,能够嵌入到HTML中进行动态网页创建。 该...

    PHP实例100

    【PHP实例100】是针对初学者设计的一套丰富的PHP编程实践教程,旨在通过具体的例子帮助学习者理解和掌握PHP语言的基本用法和常见功能。在这个压缩包中,你将找到100个精心挑选的PHP实例,这些实例涵盖了从基础语法到...

    PHP学习经典实例,适合初学者

    14. **正则表达式**:`preg_match()`和`preg_replace()`用于匹配和替换字符串,实例将涵盖基础和高级正则表达式用法。 15. **URL重写**:使用`.htaccess`和`mod_rewrite`,实例可以演示如何实现SEO友好的URL。 16....

    PHP运用foreach神奇的转换数组(实例讲解)

    本文将深入探讨如何使用`foreach`来实现数组的神奇转换,并通过一个具体的实例来演示这个过程。 首先,我们要了解原始的二维数组`$arr`,其结构如下: ```php $arr = array( 0 =&gt; array( 'data' =&gt; 100, 'type'...

    PHP实例开发源码-爱特php留言板.zip

    通过研究这个实例,不仅可以学习到PHP的基本用法,还可以了解Web开发中的常见模式和最佳实践,对于提升PHP编程技能和理解Web应用的运行机制大有裨益。不过,记得在实际环境中使用时,要根据项目需求进行相应的调整和...

    php用法PDO操作MySQL数据库实例_.docx

    标题中的“php用法PDO操作MySQL数据库实例”和描述中提到的内容主要涉及到使用PHP的PDO(PHP Data Objects)扩展来连接和操作MySQL数据库。PDO是一个轻量级且全面的数据库访问接口,它提供了数据访问抽象层,使得...

    php基础入门小实例

    **PHP基础入门小实例** PHP(Hypertext Preprocessor)...以上就是PHP基础入门的一些关键知识点,通过这些实例,你可以逐步掌握PHP的基本用法,为更深入的学习打下基础。希望这个小实例教程能对你的学习之路有所帮助。

    php学习笔记实例代码

    for、while、do...while和foreach是PHP中的循环语句。例如,使用for循环遍历数组: ```php &lt;?php $array = array("apple", "banana", "cherry"); for ($i = 0; $i ($array); $i++) { echo $array[$i] . " "; } ?...

    PHP邮件发送类PHPMailer用法实例详解__2.docx

    foreach ($attachments as $attachment) { $mail-&gt;addAttachment($attachment['path'], $attachment['name']); } } // 发送邮件 $mail-&gt;send(); return true; } catch (Exception $e) { echo "Message ...

    php常见实例.pdf

    2. **流程控制**:PHP中的流程控制结构包括条件语句(如if/else、switch)、循环(for、while、do/while、foreach)和跳转语句(break、continue),这些都是编写逻辑代码的关键部分。 3. **函数与类**:PHP支持...

    PHP实例开发源码-tmd-tpl国产PHP模板引擎.zip

    【PHP实例开发源码-tmd-tpl国产PHP模板引擎.zip】是一个包含PHP模板引擎源码的压缩包,其中的核心是`tmd_tpl`。这个国产PHP模板引擎旨在简化PHP的视图层开发,提高代码可读性和开发效率。下面将详细探讨PHP模板引擎...

Global site tag (gtag.js) - Google Analytics