当前位置: 首页 > news >正文

ThinkPHP 6.1 模板篇之循环和选择标签

本文主要介绍在视图模板中,如何使用循环和选择标签去渲染变量及常用循环和选择标签。

目录

循环标签

foreach 标签

for 标签

volist 标签

选择标签

switch 标签

if 标签

范围标签

原生标签

总结


循环标签

foreach 标签

将查找到的数组或数据集,使用{foreach}...{/foreach}函数渲染

<table border="1"><tr><th>ID</th><th>姓名</th><th>性别</th><th>爱好</th></tr>{foreach $arr as $k => $v}<tr><td>{$v.id}</td><td>{$v.name}</td><td>{$v.gender}</td><td>{$v.hobby}</td></tr>{/foreach}
</table>

注意:循环的变量名称要与传参名称一致。

for 标签

与php原生代码使用有所不同,通过起始和终止值,结合步长实现的循环。

简单例子:1-100

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

渲染数据,默认是i,可通过name修改

{for start="0" end="count($arr)" step="1" name="i"}<tr><td>{$arr[$i]['id']}</td><td>{$arr[$i]['name']}</td><td>{$arr[$i]['gender']}</td><td>{$arr[$i]['hobby']}</td></tr>
{/for}

volist 标签

volist 也是将查询得到的数据集通过循环的方式进行输出

name 属性表示数据总集,id 属性表示当前循环的数据单条集。

{volist name="arr" id="val"}<tr><td>{$val.id}</td><td>{$val.name}</td><td>{$val.gender}</td><td>{$val.hobby}</td></tr>
{/volist}

使用 offset 属性和 length 属性从第2条开始显示2条,默认下标从0开始;

{volist name="arr" id="val" offset='1' length='2'}<tr><td>{$val.id}</td><td>{$val.name}</td><td>{$val.gender}</td><td>{$val.hobby}</td></tr>
{/volist}

当没有任何数据的时候,使用 empty 属性实现输出指定的提示;

{volist name="arr" id="val" offset='10' length='2' empty="没有数据"}<tr><td>{$val.id}</td><td>{$val.name}</td><td>{$val.gender}</td><td>{$val.hobby}</td></tr>
{/volist}

默认key从0开始计算;可使用 key='k',让索引从 1 开始计算;

{volist name="arr" id="val"}<tr><td>{$key}/{$val.id}</td><td>{$val.name}</td><td>{$val.gender}</td><td>{$val.hobby}</td></tr>
{/volist}{volist name="arr" key="k" id="val"}<tr><td>{$k}/{$val.id}</td><td>{$val.name}</td><td>{$val.gender}</td><td>{$val.hobby}</td></tr>
{/volist}

选择标签

switch 标签

多条件判断可以使用switch

{switch info.gender}{case 男}帅哥{/case}{case 女}美女{/case}{default/}不存在
{/switch}

判断条件不需加引号,解析时候会加上。

<?php switch($info['gender']): case "男": ?>帅哥<?php break; case "女": ?>美女<?php break; default: ?>不存在
<?php endswitch; ?>

也可以单个case判断多条件

{switch info.week}{case 1|2|3|4|5}周一到周五:工作日{/case}{case 0|6}周末:休息日{/case}{default/}不存在
{/switch}

if 标签

简单判断

{if $info.age > 17}大于 17{/if}
{if $info.age >= 18}大于等于 18{/if}

and/or

{if ($info.age > 18) or ($info.age > 16)}大于18 或 大于16
{/if}
{if ($info.age > 18) and ($info.age = 19)}大于18等于19
{/if}

并支持使用elseif/else,进行多条件判断

{if $info.age > 18}大于18
{elseif $info.age < 18}小于18
{else}等于18
{/if}

范围标签

in判断值是否存在或不存在指定的数据列表中。

{in name='info.age' value='10,20,30,40,50'}存在{/in}
{in name='info.age' value='10,20,30,40,50'}存在数据列表中
{else/}不存在数据列表中
{/in}

between判断值是否存在或不存在数据区间中。

{between name='info.age' value='10,50'}存在{/between}
{between name='info.age' value='10,50'}存在数据区间中
{else/}不存在数据区间中
{/between}

between 中的 value 只能是两个值,表示一个区间,第三个值会无效;

区间不但可以表达数字,也可以是字母,比如 a-z,A-Z。

原生标签

有时,如果忘记在模版中怎么进行编码时,可以采用{php}标签进行原生编码;

{php}for($i=0;$i<count($arr);$i++) {echo $arr[$i]['id'];echo $arr[$i]['name'];echo $arr[$i]['gender'];echo $arr[$i]['hobby'];}
{/php}

注意:原生编码就是 PHP 编码,不能再使用模版引擎的特殊编码方式。

总结

本文中列举了常用的循环和选择标签属性及使用方式,如果实在记不住如何使用或者觉得繁琐也可以使用php原生编码实现。

相关文章:

ThinkPHP 6.1 模板篇之循环和选择标签

本文主要介绍在视图模板中&#xff0c;如何使用循环和选择标签去渲染变量及常用循环和选择标签。 目录 循环标签 foreach 标签 for 标签 volist 标签 选择标签 switch 标签 if 标签 范围标签 原生标签 总结 循环标签 foreach 标签 将查找到的数组或数据集&#xff…...

Jetpack太香了,让开发效率提升了不少

作者&#xff1a;Jingle_zhang 第三方App使用Jetpack等开源框架非常流行&#xff0c;在Gradle文件简单指定即可。然而ROM内置的系统App在源码环境下进行开发&#xff0c;与第三方App脱节严重&#xff0c;采用开源框架的情况并不常见。但如果系统App也集成了Jetpack或第三方框架…...

【软考中级信安】第四章--网络安全体系与网络安全模型

1.网络安全体系概述1.1 网络安全体系概念网络安全体系&#xff1a;是网络安全保障系统的最高层概念抽象&#xff0c;是由各种网络安全单元按照一定的规则组成的&#xff0c;共同实现网络安全的目标。1.2 网络安全体系特性整体性&#xff1a;网络安全单元按照一定规则&#xff0…...

四、GC分析内存调优

文章目录&#xff08;持续更新中... ...&#xff09;GC分析&内存调优工具篇JDK自带的工具jconsolejvisualvm第三方工具arthas&#xff08;重要&#xff09;jprofiler&#xff08;收费的&#xff09;MAT、GChisto、gcviewer、GC Easy&#xff08;待完善&#xff09;参数、命…...

如何快速开发一套分布式IM系统

架构说明&#xff1a; 1&#xff09;CIM 中的各个组件均采用 SpringBoot 构建&#xff1b;2&#xff09;采用 Netty Google Protocol Buffer 构建底层通信&#xff1b;3&#xff09;Redis 存放各个客户端的路由信息、账号信息、在线状态等&#xff1b;4&#xff09;Zookeeper …...

W806|CKLINK LITE|调试|elf文件模板|CSDK|Debug|学习(4):CKLINK调试W806

一、硬件连接 接线方式 &#xff08;连线颜色供参考&#xff0c;本例中采用图示颜色&#xff09;&#xff1a; 注意&#xff1a;CKLINK LITE的3V3须与W806的3V3相连&#xff0c;或者给W806开发板单独供电&#xff0c;两种方式均可。 ​ 否则&#xff0c;会提示“the referenc…...

【100个 Unity实用技能】 ☀️ | 脚本无需挂载到游戏对象上也可执行的方法

Unity 小科普 老规矩&#xff0c;先介绍一下 Unity 的科普小知识&#xff1a; Unity是 实时3D互动内容创作和运营平台 。包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者&#xff0c;借助 Unity 将创意变成现实。Unity 平台提供一整套完善的软件解决方案&#xff…...

「IT女神勋章」挑战赛#

缓存 本地缓存 本地缓存为了保证线程安全问题&#xff0c;一般使用ConcurrentMap的方式保存在内存之中 分布式缓存。 常见的分布式缓存则有Redis&#xff0c;MongoDB等。 一致性&#xff1a;本地缓存由于数据存储于内存之中&#xff0c;每个实例都有自己的副本&#xff0c…...

易优cms user 登录注册标签

user 登录注册标签 user 登录注册入口标签 [基础用法] 标签&#xff1a;user 描述&#xff1a;动态显示购物车、登录、注册、退出、会员中心的入口&#xff1b; 用法&#xff1a; {eyou:user typeuserinfo} <div id"{$field.htmlid}"> …...

源码安装Redis 7.0.9并且systemctl管理

以下是在/usr/local/redis中通过源代码安装Redis 7.0.9并将其加入systemctl管理的步骤&#xff1a; 首先&#xff0c;下载Redis 7.0.9源代码包&#xff1a; wget https://download.redis.io/releases/redis-7.0.9.tar.gz解压缩Redis源代码包&#xff1a; tar xzf redis-7.0.9…...

编写程序:有92号和95号汽油可以选择,选择你需要的汽油,并输入需要加油的升数,点击按钮“`计算总价钱`“在div中可以得到你所需要支付的价格

需求&#xff1a; 有92号汽油和95号可以选择&#xff0c;选择你需要的汽油&#xff0c;并输入需要加油的升数&#xff0c;点击按钮"计算总价钱"在div中可以得到你所需要支付的价格。结构如下图所示&#xff1a; 详细代码如下&#xff1a; <!DOCTYPE html> &l…...

参考文献去哪里查找,参考文献标准格式是什么

1、参考文献类型&#xff1a; 普通图书[M]、期刊文章[J]、报纸文章[N]、论文集[C]、学位论 文[D]、报告[R]、标准[s]、专利[P]、数据库[DB]、计算机程序[CP]、电 子公告[EB]、联机网络[OL]、网上期刊[J&#xff0f;OL]、网上电子公告[EB&#xff0f;OL]、其他未 说明文献[z]。…...

WIFI标签操作步骤

1. 打开并设置手机WIFI热点&#xff0c;设置SSID为ESL&#xff0c;密码为123456789&#xff08;如下图&#xff09; ​ 2. 运行APP&#xff0c;设置要接入的WIFI名称密码等信息&#xff08;如下图&#xff09; ​ 3. 长按背面按键&#xff08;长按2-3秒&#xff09;&#xff0c…...

【Hello Linux】命令行解释器

作者&#xff1a;小萌新 专栏&#xff1a;Linux 作者简介&#xff1a;大二学生 希望能和大家一起进步&#xff01; 本篇博客简介&#xff1a;使用进程的基础知识和进程控制知识做出一个简单的shell程序 命令行解释器介绍搭架子缓冲区获取命令如何从标准输入中获取字符串解析命令…...

开源一个通用的 HTTP 请求前端组件

像 Postman 这样可视化的 HTTP 请求工具是调试 API 不可或缺的利器。Postman 虽好但也越来越重&#xff0c;而且如果要整合到其他工具中&#xff0c;显然 Postman 又不是一个可行的方案。于是我想打造一个简单的前端组件&#xff08;widget&#xff09;&#xff0c;它是一个标准…...

等保测评机构资质申请条件是什么?个人可以申请吗?

最近看到不少网友在问&#xff0c;等保测评机构资质申请条件是什么&#xff1f;个人可以申请吗&#xff1f;今天我们小编就来给大家详细回答一下。 等保测评机构资质申请条件是什么&#xff1f;个人可以申请吗&#xff1f; 【回答】&#xff1a;首先需要明确一点的是&#xf…...

android 卡顿、ANR优化(1)屏幕刷新机制

前言&#xff1a; 本文通过阅读各种文章和源码总结出来的&#xff0c;如有不对&#xff0c;还望指出 目录 正文 基础概念 视觉暂留 逐行扫描 帧 CPU/GPU/Surface&#xff1a; 帧率、刷新率、画面撕裂 画面撕裂 Android屏幕刷新机制的演变 单缓存&#xff08;And…...

Landsat8中*_MTL.txt文件详解

01 什么是*_MTL.txt文件&#xff1f;所有的Landsat8 1级数据产品中均包含MTL.txt(Metadata File)文件。Landsat MTL文件包含对数据的系统搜索和归档分类有益的信息。该文件还包含关于数据处理和恶对增强陆地卫星数据有重要价值的信息&#xff08;例如转换为反射率和辐射亮度&am…...

好的提高代码质量的方法有哪些?有什么经验和技巧?

用于确保代码质量的6个高层策略&#xff1a; 1 编写易于理解的代码 考虑如下这段文本。我们有意地使其变得难以理解&#xff0c;因此&#xff0c;不要浪费太多时间去解读。粗略地读一遍&#xff0c;尽可能吸收其中的内容。 〓ts〓取一个碗&#xff0c;我们现在称之为A。取一…...

yum保留安装包

一. 用downloadonly下载 1.1 处理依赖关系自动下载到/tmp/pages目录&#xff0c;pages这个目录会自动创建 yum install --downloadonly --downloaddir/tmp/pages ceph-deploy注意&#xff0c;如果下载的包包含了任何没有满足的依赖关系&#xff0c;yum将会把所有的依赖关系包下…...

在软件开发中正确使用MySQL日期时间类型的深度解析

在日常软件开发场景中&#xff0c;时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志&#xff0c;到供应链系统的物流节点时间戳&#xff0c;时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库&#xff0c;其日期时间类型的…...

Java 语言特性(面试系列2)

一、SQL 基础 1. 复杂查询 &#xff08;1&#xff09;连接查询&#xff08;JOIN&#xff09; 内连接&#xff08;INNER JOIN&#xff09;&#xff1a;返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩

目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

华为OD机试-食堂供餐-二分法

import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

Axios请求超时重发机制

Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式&#xff1a; 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...

Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?

在大数据处理领域&#xff0c;Hive 作为 Hadoop 生态中重要的数据仓库工具&#xff0c;其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式&#xff0c;很多开发者常常陷入选择困境。本文将从底…...

【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案

目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后&#xff0c;迭代器会失效&#xff0c;因为顺序迭代器在内存中是连续存储的&#xff0c;元素删除后&#xff0c;后续元素会前移。 但一些场景中&#xff0c;我们又需要在执行删除操作…...

Canal环境搭建并实现和ES数据同步

作者&#xff1a;田超凡 日期&#xff1a;2025年6月7日 Canal安装&#xff0c;启动端口11111、8082&#xff1a; 安装canal-deployer服务端&#xff1a; https://github.com/alibaba/canal/releases/1.1.7/canal.deployer-1.1.7.tar.gz cd /opt/homebrew/etc mkdir canal…...

CppCon 2015 学习:Simple, Extensible Pattern Matching in C++14

什么是 Pattern Matching&#xff08;模式匹配&#xff09; ❝ 模式匹配就是一种“描述式”的写法&#xff0c;不需要你手动判断、提取数据&#xff0c;而是直接描述你希望的数据结构是什么样子&#xff0c;系统自动判断并提取。❞ 你给的定义拆解&#xff1a; ✴ Instead of …...