{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
- 应用扩展
- 支付宝手机端支付
- 支付宝电脑端支付