学习thinkphp的循环标签

1.FOREACH标签

foreach标签的用法和PHP语法非常接近,用于循环输出数组或者对象的属性,用法如下:

$list = User::all();
View::assign('list',$list);

模板文件中可以这样输出

{foreach $list as $key=>$vo } {$vo.id}:{$vo.name}
{/foreach}

可以不通过模板变量赋值,支持使用函数或者方法获取数据循环输出:

{foreach :model('user')->all() as $key=>$vo } {$vo.id}:{$vo.name}
{/foreach}
 public function foreachDemo(){$arr =[['id'=>1,'name'=>'张三','sex'=>'男'],['id'=>2,'name'=>'李四','sex'=>'女'],['id'=>3,'name'=>'王五','sex'=>'男']];view::assign('arr',$arr);return view::fetch('index/login');}
	{foreach $arr as $k=>$v}{$k} - {$v.id} - {$v.name} - {$v.sex} <br>{/foreach}

2.VOLIST标签

volist标签通常用于查询数据集或者二维数组的结果输出。 在控制器中首先对模版赋值:

$list = User::all();
View::assign('list',$list);

在模版定义如下,循环输出用户的编号和姓名:

{volist name="list" id="vo"}
{$vo.id}:{$vo.name}<br/>
{/volist}

Volist标签的name属性表示模板赋值的变量名称,因此不可随意在模板文件中改变。id表示当前的循环变量,可以随意指定,但确保不要和name属性冲突,例如:

{volist name="list" id="data"}
{$data.id}:{$data.name}<br/>
{/volist}

可以直接使用函数设定数据集,而不需要在控制器中给模板变量赋值传入数据集变量,如:

{volist name=":model('user')->all()" id="vo"}
{$vo.name}
{/volist}

支持输出查询结果中的部分数据,例如输出其中的第5~15条记录

{volist name="list" id="vo" offset="5" length='10'}
{$vo.name}
{/volist}

输出偶数记录

{volist name="list" id="vo" mod="2" }
{eq name="mod" value="1"}{$vo.name}{/eq}
{/volist}

mod属性还用于控制一定记录的换行,例如

{volist name="list" id="vo" mod="5" }
{$vo.name}
{eq name="mod" value="4"}<br/>{/eq}
{/volist}

为空的时候输出提示:

{volist name="list" id="vo" empty="暂时没有数据" }
{$vo.id}|{$vo.name}
{/volist}

empty属性不支持直接传入html语法,但可以支持变量输出,例如:

View::assign('empty','<span class="empty">没有数据</span>');
View::assign('list',$list);

然后在模板中使用:

{volist name="list" id="vo" empty="$empty" }
{$vo.id}|{$vo.name}
{/volist}

输出循环变量:

{volist name="list" id="vo" key="k" }
{$k}.{$vo.name}
{/volist}

如果没有指定key属性的话,默认使用循环变量i,例如:

{volist name="list" id="vo"  }
{$i}.{$vo.name}
{/volist}

如果要输出数组的索引,可以直接使用key变量,和循环变量不同的是,这个key是由数据本身决定,而不是循环控制的,例如:

{volist name="list" id="vo"  }
{$key}.{$vo.name}
{/volist}
 public function foreachDemo(){$arr =[['id'=>1,'name'=>'张三','sex'=>'男'],['id'=>2,'name'=>'李四','sex'=>'女'],['id'=>3,'name'=>'王五','sex'=>'男']];view::assign('arr',$arr);return view::fetch('index/login');}
<table border="1"><tr><th>id</th><th>姓名</th><th>性别</th></tr>{volist name="arr" id="v"}<tr><td>{$v.id}</td><td>{$v.name}</td><td>{$v.sex}</td></tr>{/volist}</table>

3.FOR标签

用法:

{for start="开始值" end="结束值" comparison="" step="步进值" name="循环变量名" }
{/for}

开始值、结束值、步进值和循环变量都可以支持变量,开始值和结束值是必须,其他是可选。comparison 的默认值是lt,name的默认值是i,步进值的默认值是1,举例如下:

{for start="1" end="100"}
{$i}
{/for}

解析后的代码是

for ($i=1;$i<100;$i+=1){echo $i;
} 

demo

 {for start = "1" end="10"}{$i}{/for}

 官网地址:循环标签 · ThinkTemplate开发指南 · 看云 (kancloud.cn)

 

总结:

此文章是笔者的学习笔记,内容也和官网内容大差不差,笔者在文章末尾也给出了官网地址,如果您在浏览或者运行代码的时候发现了错误,还请您第一时间在评论区留言,笔者在看到后会在第一时间解决,谢谢。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/15232.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

element-plusDate Picker 日期选择器获取年月日

代码逻辑 对选择日期选择后进行搜索 &#xff1a; function dataValue(value) {console.log(value);scenic_list.value arrlist.value.filter(function (item) {// 判断是否满足搜索条件if (String(item.create_time).indexOf(String(value)) > -1) {return scenic_list}}…

Java 说唱歌手

Yo yo yo&#xff0c;欢迎来到Java地带&#xff0c;技术的盛宴开启&#xff0c; 从JDK到JVM&#xff0c;我们构建的是数字世界的奇迹。 Spring Boot启动&#xff0c;微服务架构轻盈起舞&#xff0c; IoC解耦依赖&#xff0c;AOP切面如丝般顺滑。 Maven管理依赖&#xff0c;Gra…

CS144 Lab Checkpoint 5: down the stack (the network interface)

网络层 (NetworkLayer) 发送数据报 (send_datagram)&#xff1a;应用层调用 send_datagram 方法&#xff0c;传递需要发送的IP数据包和下一跳的IP地址。IP数据报&#xff1a;将数据报封装成一个IP数据包。查找ARP缓存&#xff1a;检查ARP缓存中是否有目标IP地址的MAC地址。找到…

timm笔记

快速开始 安装 timm pip install timmtimm.create_model (model_name: str,pretrained: bool False,pretrained_cfg:Union None,pretrained_cfg_overlay: Optional None,checkpoint_path: str ,scriptable: Optional None,exportable: Optional None,no_jit: Optiona…

SpringMVC流程

1、SpringMVC常用组件&#xff1a; DispatcherServlet&#xff08;请求分发器&#xff09;&#xff1a;Spring MVC的核心组件之一&#xff0c;负责处理全局配置和将用户请求分发给其他组件进行处理。Controller&#xff08;处理器&#xff09;&#xff1a; 实际处理业务逻辑的…

B站滑块登录之极验点选

滑块登录这些东西都不是很难&#xff0c;我个人的去处理的话一般会考虑三种方案&#xff0c;一个是自动化selenium 二是各类打码平台 三是ocr识别&#xff0c;本文是selenium接打码平台&#xff0c;也是个比较常规的操作。 先常规步骤跟着来吧&#xff0c;做登录的话把基本的模…

Golang:使用wellington/go-libsass对CSS进行预处理

wellington/go-libsass是一个用于预处理CSS文件的库&#xff0c;采用 Go封装&#xff0c;100% 与 Sass 兼容的 libsass 项目 不过需要依赖libsass&#xff0c;现在已经过时了&#xff0c;可以考虑使用dart-sass 文档 https://github.com/wellington/go-libsass 安装 go ge…

淘宝搬家到另一个店铺可以吗?店铺搬家了影响退款吗?

在淘宝平台上&#xff0c;商家可能会因为各种原因需要将店铺迁移到另一个店铺。那么&#xff0c;淘宝搬家到另一个店铺是否可行&#xff0c;搬家对退款又会产生什么影响呢&#xff1f;接下来详细解答这些问题。 一、淘宝搬家到另一个店铺可以吗 可以 1、 淘宝搬家流程&#…

网络编程-TCP并发服务器-多点通信-域套接字

多进程实现TCP并发&#xff1a;依赖于while循环模式可初步实现并发功能&#xff0c;但是由于accpet函数和读写函数是阻塞的&#xff0c;导致必须要等待阻塞结束下一个用户才能连接&#xff0c;所以考虑使用多进程。 思路&#xff1a;将与客户端建立连接设置成父进程&#xff0…

Tower在深度学习中的概念,tower没有确切定义

在论文UniTS中&#xff0c;来自Havard的工作。 tower更像是针对一个task的组件 tower这个概念貌似在REC&#xff08;recommendation&#xff09;推荐系统中使用较多 deep learning - What is a tower? - Data Science Stack Exchange https://developers.google.com/machin…

Android APP在debug模式下,如何避免activity被系统destroy

最近在调式APP时发现&#xff0c;如果在APP运行时&#xff08;比如&#xff1a;进入了某个子模块的某个列表项的详情页&#xff1a;InfoShowActivity&#xff09;&#xff0c;点击home按钮&#xff0c;返回主屏幕。然后再返回APP时&#xff0c;APP不会显示之前的界面&#xff0…

技术前沿 |【VL-BEIT:引领未来的极简单阶段多模态预训练方案】

VL-BEIT&#xff1a;引领未来的极简单阶段多模态预训练方案 引言一、VL-BEIT的基本介绍二、VL-BEIT的原理和工作方式三、VL-BEIT的特点四、VL-BEIT的应用场景五、总结与展望 引言 在人工智能蓬勃发展的今天&#xff0c;多模态预训练模型正逐渐成为研究和应用的热点。这些模型能…

二叉树OJ题目

一.二叉树第k层结点个数 有这样的一个思路&#xff1a;我既然要求第k层的结点个数&#xff0c;我肯定是要用到递归&#xff0c;那么当我在递归到第k层的时候我就开始判断&#xff0c;这一层是不是我所需要的那一层&#xff0c;如果是&#xff0c;就计数有几个节点&#xff0c;…

边框渐变样式

实现样式&#xff1a; 对应代码&#xff1a; div {min-height: 40vh;border: 10px solid transparent;background-image: linear-gradient(#222, #222), var(--gradient);background-origin: border-box;background-clip: padding-box, border-box;border-radius: 10px;positi…

一周开发一个在线客服系统

使用 Go 和 Gin 框架开发在线客服系统是一种高效且性能优越的选择。以下是具体的开发计划&#xff0c;专注于使用 Gin 框架来实现后端&#xff1a; 演示效果&#xff1a;gofly.v1kf.com 第一天&#xff1a;需求分析和设计 需求分析&#xff1a; 确定系统功能&#xff1a;实时聊…

【数组】Leetcode 228. 汇总区间【简单】

汇总区间 给定一个 无重复元素 的 有序 整数数组 nums 。 返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表 。也就是说&#xff0c;nums 的每个元素都恰好被某个区间范围所覆盖&#xff0c;并且不存在属于某个范围但不属于 nums 的数字 x 。 列表中的每个区间范围 [a,…

粉丝问,有没有UI的统计页面,安排!

移动应用的数据统计页面具有以下几个重要作用&#xff1a; 监控业务指标&#xff1a;数据统计页面可以帮助用户监控关键业务指标和数据&#xff0c;例如用户活跃度、销售额、转化率等。通过实时更新和可视化呈现数据&#xff0c;用户可以及时了解业务的整体状况和趋势。分析用…

每日练习之字符串——得分

得分 题目描述 运行代码 #include <iostream> using namespace std; int main(){int n;cin>>n;while(n--){string s;cin>>s;int ls.length();int a0;int t1;for(int i0;i<l;i){if(s[i]O){at;t;}else if(s[i]X){t1;}}cout<<a<<endl;} } 代码…

QT7_视频知识点笔记_5_线程,数据库

多线程 两种办法&#xff1a;第一种&#xff1a;Qt4.7之前的线程使用的方法&#xff08;简单&#xff09;&#xff1b;第二种&#xff1a;Qt4.7之后的&#xff08;灵活–推荐&#xff09;----connect最后一个参数的作用&#xff1a;默认连接&#xff0c;队列连接&#xff0c;直…

操作系统总结4----死锁的处理策略总结

目录 2.4.2 死锁的处理策略-----预防死锁 &#xff08;1&#xff09;知识总览 &#xff08;2&#xff09;破环互斥条件 &#xff08;3&#xff09;破环不剥夺条件 &#xff08;4&#xff09;破环求情和保持条件 &#xff08;5&#xff09;破环循环等待条件 总结 2.4.3 死…