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}

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