{foreach},{foreachelse}
{foreach}用于循環數組。 {foreach}的語法比{section}循環要更簡單和清晰,并且可以使用非數字下標的數組。
{foreach $arrayvar as $itemvar}
{foreach $arrayvar as $keyvar=>$itemvar}
>
> Note:
> foreach的語法可以接受沒有名稱的屬性,該語法是Smarty 3新增的。
>
> 然而Smarty 2語法 {foreach from=$myarray key="mykey" item="myitem"}也同樣支持。
{foreach} 循環可以被嵌套使用.
array變量,一般是數組的值,決定了{foreach} 循環的次數。你也可以傳遞一個任意的整數來控制循環次數。
如果array數組變量中,沒有值的情況下, {foreachelse}將執行。
{foreach}的屬性: @index, @iteration, @first, @last, @show, @total.
{foreach}的語法命令: {break}, {continue}.
代替指定key變量,你可以通過 {$item@key}來使用循環的當前key。(見下面的例子).
> Note:
> $var@property的語法是Smarty 3新增的。然而Smarty 2風格的語法{foreach from=$myarray key="mykey" item="myitem"}, $smarty.foreach.name.property也是支持的。
> Note:
> 即使你在循環語法里{foreach $myArray as $myKey => $myValue} 已經指定了key的變量名,但循環體內$myValue@key還是可用的。
可選標記:
名稱 | 說明
| --- | --- |
| nocache | 關閉{foreach}循環的緩存
簡單的{foreach} 循環
控制器:
```
$arr = array('red', 'green', 'blue');
return View('Home/index')->data(['myColors' => $arr])->get();
```
模板將順序輸出$myColors。
```
<ul>
_{foreach $myColors as $color}_
<li>{$color}</li>
_{/foreach}_
</ul>
```
輸出:
```
<ul>
<li>red</li>
<li>green</li>
<li>blue</li>
</ul>
```
使用key變量的例子
```
$people = array('fname' => 'John', 'lname' => 'Doe', 'email' => 'j.doe@example.com');
return View('Home/index')->data(['myPeople' => $people])->get();
```
模板將以鍵值對的方式輸出$myPeople
```
<ul>
_{foreach $myPeople as $value}_
<li>_{$value@key}_:_{$value}_</li>
_{/foreach}_
</ul>
```
輸出:
```
<ul>
<li>fname: John</li>
<li>lname: Doe</li>
<li>email: j.doe@example.com</li>
</ul>
```
多維數組通過item 和 key來嵌套使用{foreach}
多維數組的鍵一般會對應另一個數組。
```
$arr = array(
array('phone' => '555-555-1234',
'fax' => '555-555-5678',
'cell' => '555-555-0357'),
array('phone' => '800-555-4444',
'fax' => '800-555-3333',
'cell' => '800-555-2222')
);
return View('Home/index')->data(['contacts' => $arr])->get();
```
模板將輸出$contact.
```
_{foreach $contacts as $contact}_
_{foreach $contact as $value}_
_{$value@key}: {$value}_
_{/foreach}_
_{/foreach}_
```
上面例子會輸出:
```
phone: 555-555-1234
fax: 555-555-5678
cell: 555-555-0357
phone: 800-555-4444
fax: 800-555-3333
cell: 800-555-2222
```
- 概述
- 基礎
- 安裝
- 規范
- 目錄
- 環境
- 配置
- 全部配置
- 數據庫配置
- 緩存配置
- 框架配置
- 自定義配置
- 讀取配置
- 控制器
- 創建
- 規范
- 繼承
- 輸出
- 視圖
- 基本使用
- 渲染模板
- 賦值變量
- 獲取結果
- 模板
- 常用標簽
- if - 判斷
- foreach - 遍歷
- break - 停止循環
- continue - 跳過循環
- @index - 索引
- @iteration - 循環次數
- @first - 首次循環
- @last - 最后循環
- for - 循環
- var - 定義變量
- nocache - 禁用緩存
- assign - 變量賦值
- include - 引入文件
- 變量修飾
- default - 默認輸出
- capitalize - 首字母大寫
- lower - 字母轉小寫
- upper - 字符轉大寫
- count_characters - 統計字符長度
- count_words - 統計單詞數量
- date_format - 格式化日期
- Chapter - 文本實體化
- indent - 縮進文本
- nl2br - 轉義換行
- replace - 文本替換
- spacify - 插入文本
- string_format - 字符串格式化
- strip - 移除特殊字符
- truncate - 文本截取
- 保留變量
- 數據庫
- 配置
- 基本使用
- 數據處理
- 增加數據
- 刪除數據
- 修改數據
- 查詢數據
- 其他查詢
- 關鍵字
- field
- join
- where
- page
- limit
- orderby
- groupby
- 其他
- 調試
- 緩存
- 各個緩存服務安裝
- 基本使用
- 設定緩存
- 查詢緩存
- 刪除緩存
- 修改緩存
- 清空緩存
- 其他操作
- Session操作
- Cookie操作
- File緩存
- 輔助
- 功能列表
- helper助手
- 擴展
- Composer
- 自定義擴展
- 包擴展
- 訪問
- 入口文件
- 靜態化
- 路由
- 默認路由
- 傳統請求
- 規則
- 其他
- 上傳文件
- 寫出日志
- 展示狀態頁
- CLI模式運行
- 上線須知
- 獲取GET/POST
- 性能消耗
- 直接訪問靜態頁
- 內置常量
- 圖形驗證碼
- 安裝Composer
- 應用擴展
- 支付寶手機端支付
- 支付寶電腦端支付