PHP中foreach循环详解

首先要说的是,其实我对foreach循环的用法并不是很精通,说详解,其实也只是我自己的理解,希望对你能有点帮助 。ICON
先来看一下foreach的语法:
foreach ($array as $key=>$value)
{
……
}
为了便于理解,我们假定这里的$array是一个一维的相关数组,$key是数组的索引,$value是这个索引的值,它们的名字可以随意,之所以叫$key和$value是为了便于理解。为了能让你更好的理解foreach的工作过程,我们来创建一个数组:
$array = array('first'=>'ibm','second','hp');
现在我们模拟PHP服务用foreach对$array进行遍历:
foreach ($array as $key=>$value)
{
echo $key.'=>'$value;
}
第一次循环,$key = 'first',$value = 'ibm',这个时候,实际foreach对$array执行了一个我们看不见的操作:next($array),将数组指针向前(这里的“向前”跟PHP手册相同,不是我们通常所理解的“向前”)移一。然后echo语句输出"first=>ibm"。
第二次循环,首先会判断数组$array的当前指针是否已经到了数组的末尾,如果是,结束循环,否则进入第二次循环。当然这样的判断在进入第一次循环的时候也会有,如果$array是一个空数组,那么就会直接执行循环下面的语句。此时,$key = 'second','value' = 'hp',next($array)后,输出"second=>hp"。然后进行判断,数组指针已经到达末尾,执行下面的语句。
到这里你应该对foreach循环有所了解了吧?还有一点需要的是,foreach每次只是传递一个值,而不是真的对数组元素进行操作。具体到上面的例子,如果你想在每个数组元素的后面加上 'company' 这个字符串,那么$value .= 'company'这样的操作是不行的,它并不会改变数组元素的值,这个时候你应该这样用:$array[$key] .= 'company';
 
 

函数名

foreach

定义和用法

从指定的数组中循环顺序取出数值/关键字,分别设置在item/key中。

语法

{foreach from=”data” item=”varname” [key=”k_name”] [name=”l_name”]}
template
[{foreachelse}
template_else]
{/foreach}

参数描述

data,对象数组
varname,放置值的变量
k_name,放置关键字的变量
l_name,循环名
template,HTML模板块
template_else,发生错误时的HTML模板块

提示和注释

指定name属性时,与循环相关的信息可以预约变量{$smarty.foreach.循环名.属性}的形式取得。除了total属性外都可以在循环中参照。
{$smarty.foreach.循环名}的属性一览


属性

说明

iteration

当前循环的回数

first

是否为最初的循环(TRUE或FALSE)

last

是否为最终的循环(TRUE或FALSE)

show

是否显示foreach块(FALSE时显示foreachelse块)

total

循环的总回数(用于循环外)

例子

{foreach from=$data item=”datum” name=”loop”}
<li>{$datum|escape}</li>
{foreachelse}
数据不存在
{/foreach}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章