foreach,foreachelse

属性名称TypeRequiredDefaultDescription
fromstringYesn/a The name of the array you are looping through
需要循环的数组的名称
itemstringYesn/a The name of the variable that is the current element
当前元素的变量名
keystringNon/a The name of the variable that is the current key
当前关键字的变量名
namestringNon/a The name of the foreach loop for accessing foreach properties
访问foreache属性的foreach循环名

foreach loops are an alternative to section loops.
foreach
is used to loop over a single associative array.
The syntax for foreach is much easier than section, but as a tradeoff it can only be used for a single array. foreach tags must be paired with /foreach tags. Required parameters are from and item.
The name of the foreach loop can be anything you like, made up of letters, numbers and underscores.
foreach loops can be nested, and the nested foreach names must be unique from each other.
The from variable (usually an array of values) determines the number of times foreach will loop.
foreachelse is executed when there are no values in the from variable.

foreach循环是选择性的section循环.
foreach用于遍历关联数组.
foreach的语法比section简单的多,但是作为一个折中它只能用于简单数组.
foreach的标签必须成对,必须的参数是from和item.
循环的名称是字母,数字和下划线.
循环可以互相嵌套,被嵌套的循环之间的名字必须是独立的.
from变量(通常是一个数组的值)决定循环的次数
foreachelse 在from变量没有值的时候被执行

Example 7-4. foreach


{* this example will print out all the values of the $custid array *}

{foreach from=$custid item=curr_id}

	id: {$curr_id}<br>

{/foreach}



OUTPUT:



id: 1000<br>

id: 1001<br>

id: 1002<br>

Example 7-5. foreach key

{* The key contains the key for each looped value



assignment looks like this:



$smarty->assign("contacts", array(array("phone" => "1", "fax" => "2", "cell" => "3"),

      array("phone" => "555-4444", "fax" => "555-3333", "cell" => "760-1234")));



*}



{foreach name=outer item=contact from=$contacts}

  {foreach key=key item=item from=$contact}

    {$key}: {$item}<br>

  {/foreach}

{/foreach}



OUTPUT:



phone: 1<br>

fax: 2<br>

cell: 3<br>

phone: 555-4444<br>

fax: 555-3333<br>

cell: 760-1234<br>