探讨Smarty中如何获取数组的长度以及smarty调用php函数的详解


Posted in PHP onJune 20, 2013

Smarty中如何获取数组的长度
前提假设:
分配了一个数组array给Smarty,假设Smarty的分界符为'{' 和'}'。
在很多资料上都看到,在Smarty中要求数组的长度时,可以用在数组后便加|count的方法调用。即通过{array|count}获得array的长度。但是今天在写模板时,发现这样得不到数组的长度,而只是得到一个返回的字符串Array。也就是说仅仅是返回了{array}的结果,而没有返回其array的长度。

查看smarty\plugins文件夹,发现并没有count的相关方法,也就是说,count是直接调用了php中的方法。
后来通过网络上的资料,发现可以在count前面加@,从而正确的获取数组的长度。再进一步查看Smarty的源码,发现Smarty对属性调节器后边的方法名进行处理时,会对前边加@的进行特殊处理。因此作出判断:在Smarty中的属性调节器中调用php中定义好的函数时,可以通过加@来表示。

1、对类型为数组的方法进行测试时,发现不加@符号都会出错。比如:要对一个数组调用count方法求出数组的长度,就可以这样调用{array|@count},而要对数组调用end方法得出数组的最后一组数据时,则可以通过{array|@end}。
2、在对字符串的相关函数进行测试,发现加不加@都可以正常的调用。
3、其他的尚未认真测试。对于在smarty中调用复杂的php函数不予鼓励,因为Smarty的本意就是要实现代码和模板分离,应该认定模板就是界面设计的人员用的,如果过多地加复杂逻辑,对他们来说就是一种折磨了。

 

PHP 相关文章推荐
实用函数3
Nov 08 PHP
php中iconv函数使用方法
May 24 PHP
php中的数组操作函数整理
Aug 18 PHP
谨慎使用PHP的引用原因分析
Sep 06 PHP
PHP Global变量定义当前页面的全局变量实现探讨
Jun 05 PHP
ThinkPHP快速入门实例教程之数据分页
Jul 01 PHP
PHP网站开发中常用的8个小技巧
Feb 13 PHP
PHP中set error handler函数用法小结
Nov 11 PHP
PHP购物车类Cart.class.php定义与用法示例
Jul 20 PHP
php文件上传、下载和删除示例
Aug 28 PHP
php empty 函数判断结果为空但实际值却为非空的原因解析
May 28 PHP
php开发最强大的IDE编辑的phpstorm 2020.2配置Xdebug调试的详细教程
Aug 17 PHP
解析yii数据库的增删查改
Jun 20 #PHP
在yii中新增一个用户验证的方法详解
Jun 20 #PHP
浅析Yii中使用RBAC的完全指南(用户角色权限控制)
Jun 20 #PHP
php中0,null,empty,空,false,字符串关系的详细介绍
Jun 20 #PHP
解析PHP中数组元素升序、降序以及重新排序的函数
Jun 20 #PHP
解析php中的fopen()函数用打开文件模式说明
Jun 20 #PHP
深入解析PHP内存管理之谁动了我的内存
Jun 20 #PHP
You might like
phpstudy默认不支持64位php的解决方法
2017/02/20 PHP
Windows下wamp php单元测试工具PHPUnit安装及生成日志文件配置方法
2018/05/28 PHP
PHP PDOStatement::errorCode讲解
2019/01/31 PHP
在laravel框架中实现封装公共方法全局调用
2019/10/14 PHP
JQUERY设置IFRAME的SRC值的代码
2010/11/30 Javascript
兼容IE和FF的图片上传前预览js代码
2013/05/28 Javascript
用javascript删除当前行,添加行(示例代码)
2013/11/25 Javascript
JS+JSP checkBox 全选具体实现
2014/01/02 Javascript
jquery带下拉菜单和焦点图代码分享
2015/08/24 Javascript
JavaScript生成二维码图片小结
2015/12/27 Javascript
JavaScript操作HTML DOM节点的基础教程
2016/03/11 Javascript
输入法的回车与消息发送快捷键回车的冲突解决方法
2016/08/09 Javascript
原生js实现jquery函数animate()动画效果的简单实例
2016/08/21 Javascript
vue.js表格组件开发的实例详解
2016/10/12 Javascript
xcode中获取js文件的路径方法(推荐)
2016/11/05 Javascript
JS实现Cookie读、写、删除操作工具类示例
2018/08/28 Javascript
在layui中对table中的数据进行判断(0、1)转换为提示信息的方法
2019/09/28 Javascript
删除目录下相同文件的python代码(逐级优化)
2012/05/25 Python
Python多进程库multiprocessing中进程池Pool类的使用详解
2017/11/24 Python
详解Python 切片语法
2019/06/10 Python
opencv-python 提取sift特征并匹配的实例
2019/12/09 Python
python保留小数位的三种实现方法
2020/01/07 Python
10个python3常用排序算法详细说明与实例(快速排序,冒泡排序,桶排序,基数排序,堆排序,希尔排序,归并排序,计数排序)
2020/03/17 Python
一款纯css3实现的漂亮的404页面的实例教程
2014/11/27 HTML / CSS
canvas实现圆形进度条动画的示例代码
2017/12/26 HTML / CSS
德国机场停车位比较和预订网站:Ich-parke-billiger
2018/01/08 全球购物
Feelunique德国官方网站:欧洲最大的在线美容零售商
2019/07/20 全球购物
Bluebella德国官网:英国性感内衣和睡衣品牌
2019/11/08 全球购物
英国自行车商店:AW Cycles
2021/02/24 全球购物
销售助理岗位职责
2014/02/21 职场文书
一年级学生评语
2014/04/23 职场文书
企业总经理任命书
2014/06/05 职场文书
励志演讲稿500字
2014/08/21 职场文书
酒店管理专业毕业生自我鉴定
2014/09/29 职场文书
仓管员岗位职责范本
2015/04/01 职场文书
redis通过6379端口无法连接服务器(redis-server.exe闪退)
2021/05/08 Redis