在PHP模板引擎smarty生成随机数的方法和math函数详解


Posted in PHP onApril 24, 2014

这个当然绝对是可行的,但过于复杂,下面作者就如何直接在smarty模板中生成随机数这个小技巧和大家分享一下。

现在假设在smarty模板中需要生成一个125-324之间的随机数,那么可以按如下写法:

{math equation=rand(125,324)}

这样就实现了我们的目的了,怎么样?是不是很简单,其实这里主要用到了smarty模板中的math函数,下面对Smarty math函数的作用以及用法做个简要的讲解。

math 允许模板设计者在模板中进行数学表达式运算. 均表达式中可以使用任何数值类型的变量,结果在 math 标签的位置输出. 表达式中使用的变量被当做参数传递给函数,可以是模板变量或静态值. 目前可以使用的运算符有:+, -, /, *, abs, ceil, cos, exp, floor, log, log10, max, min, pi, pow, rand, round, sin, sqrt, srans 和 tan .关于数学函数的详细信息,请查看 PHP 文档。

如果指定了 "assign" 这个特殊属性,该函数的输出值将被赋给由 assign 指定的模板变量,而不是直接输出。

不过需要注意的是: 由于使用了 php 的 eval() 函数,math 函数的执行效率不高. 在 PHP 中做数学运算效率会更高一些,因此要尽可能在 PHP 中做数学运算,将结果赋给模板变量。

smarty math 函数演示

{* $height=4, $width=5 *}
{math equation="x + y" x=$height y=$width}

输出结果:9
{* $row_height = 10, $row_width = 20, #col_div# = 2, assigned in template *}
{math equation="height * width / division"
 height=$row_height
 width=$row_width
 division=#col_div#}

输出结果:100
{math equation="(( x + y ) / z )" x=2 y=10 z=2}

输出结果:6
{* you can supply a format parameter in sprintf format *}
{math equation="x + y" x=4.4444 y=5.0000 format="%.2f"}

输出结果:9.44
PHP 相关文章推荐
PHP开发文件系统实例讲解
Oct 09 PHP
用PHP调用数据库的存贮过程!
Oct 09 PHP
PHP imagecreatefrombmp 从BMP文件或URL新建一图像
Jul 16 PHP
php递归获取目录内文件(包含子目录)封装类分享
Dec 25 PHP
php的curl封装类用法实例
Nov 07 PHP
PHP 常用的header头部定义汇总
Jun 19 PHP
CI框架中redis缓存相关操作文件示例代码
May 17 PHP
解读PHP中上传文件的处理问题
May 29 PHP
PHP对XML内容进行修改和删除实例代码
Oct 26 PHP
PHP数组遍历的几种常见方式总结
Feb 15 PHP
Laravel5.5+ 使用API Resources快速输出自定义JSON方法详解
Apr 06 PHP
PHP实现Snowflake生成分布式唯一ID的方法示例
Aug 30 PHP
PHP模板引擎Smarty的缓存使用总结
Apr 24 #PHP
php smarty模板引擎的6个小技巧
Apr 24 #PHP
PHP中使用smarty生成静态文件的例子
Apr 24 #PHP
php过滤html中的其他网站链接的方法(域名白名单功能)
Apr 24 #PHP
php导出csv数据在浏览器中输出提供下载或保存到文件的示例
Apr 24 #PHP
smarty模板中使用get、post、request、cookies、session变量的方法
Apr 24 #PHP
php冒泡排序、快速排序、快速查找、二维数组去重实例分享
Apr 24 #PHP
You might like
PHP 双链表(SplDoublyLinkedList)简介和使用实例
2015/05/12 PHP
在网页中控制wmplayer播放器
2006/07/01 Javascript
由浅到深了解JavaScript类
2006/09/08 Javascript
js 字符串转化成数字的代码
2011/06/29 Javascript
js实现的仿新浪微博完美的时间组件升级版
2011/12/20 Javascript
js调用iframe实现打印页面内容的方法
2014/03/04 Javascript
ECMAScript 6即将带给我们新的数组操作方法前瞻
2015/01/06 Javascript
JavaScript中判断变量是数组、函数或是对象类型的方法
2015/02/25 Javascript
JavaScript DOM事件(笔记)
2015/04/08 Javascript
JavaScript实现点击按钮字体放大、缩小
2016/02/29 Javascript
浅谈jquery的map()和each()方法
2016/06/12 Javascript
JavaScript中this的用法及this在不同应用场景的作用解析
2017/04/13 Javascript
利用ES6实现单例模式及其应用详解
2017/12/09 Javascript
使用JavaScript解析URL的方法示例
2019/03/01 Javascript
NodeJs入门教程之定时器和队列
2019/03/08 NodeJs
一个手写的vue放大镜效果
2019/08/09 Javascript
[49:08]OpTic vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
[45:50]完美世界DOTA2联赛PWL S3 CPG vs Forest 第二场 12.16
2020/12/17 DOTA
使用pyecharts在jupyter notebook上绘图
2020/04/23 Python
Python列表推导式与生成器表达式用法示例
2018/02/08 Python
Python cookbook(数据结构与算法)保存最后N个元素的方法
2018/02/13 Python
Python基于百度云文字识别API
2018/12/13 Python
python-opencv 将连续图片写成视频格式的方法
2019/01/08 Python
python如何通过pyqt5实现进度条
2020/01/20 Python
Python 写了个新型冠状病毒疫情传播模拟程序
2020/02/14 Python
Python中操作各种多媒体,视频、音频到图片的代码详解
2020/06/04 Python
Booking.com西班牙:全球酒店预订
2018/03/30 全球购物
世界闻名的衬衫制造商:Savile Row Company
2018/07/30 全球购物
网络公司美工设计工作个人的自我评价
2013/11/03 职场文书
校园联欢晚会主持词
2014/03/17 职场文书
承诺书格式
2014/06/03 职场文书
捐资助学感谢信
2015/01/21 职场文书
工伤事故赔偿协议书
2015/08/06 职场文书
Spring Boot 整合 Apache Dubbo的示例代码
2021/07/04 Java/Android
使用redis生成唯一编号及原理示例详解
2021/09/15 Redis
tomcat的catalina.out日志按自定义时间格式进行分割的操作方法
2022/04/02 Servers