探讨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 相关文章推荐
php中实现简单的ACL 完结篇
Sep 07 PHP
探讨php中防止SQL注入最好的方法是什么
Jun 10 PHP
PHP防止跨域提交表单
Nov 01 PHP
PHP 面向对象程序设计(oop)学习笔记 (二) - 静态变量的属性和方法及延迟绑定
Jun 12 PHP
php简单生成随机数的方法
Jul 30 PHP
PHP实现的DES加密解密实例代码
Apr 06 PHP
PHP将MySQL的查询结果转换为数组并用where拼接的示例
May 13 PHP
Ajax实现对静态页面的文章访问统计功能示例
Oct 10 PHP
使用XHProf查找PHP性能瓶颈的实例
Dec 13 PHP
PHP实现动态压缩js与css文件的方法
May 02 PHP
浅谈php调用python文件
Mar 29 PHP
laravel 实现上传图片到本地和前台访问示例
Oct 21 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
php+mysql事务rollback&commit示例
2010/02/08 PHP
PHP 简易输出CSV表格文件的方法详解
2013/06/20 PHP
Thinkphp5.0框架的Db操作实例分析【连接、增删改查、链式操作等】
2019/10/11 PHP
windows8.1+iis8.5下安装node.js开发环境
2014/12/12 Javascript
javascript截取字符串小结
2015/04/28 Javascript
如何动态加载外部Javascript文件
2015/12/02 Javascript
如何消除inline-block属性带来的标签间间隙
2016/03/31 Javascript
Javascript基础学习笔记(菜鸟必看篇)
2016/07/22 Javascript
jQuery基本筛选选择器实例代码
2017/02/06 Javascript
在iframe中使bootstrap的模态框在父页面弹出问题
2017/08/07 Javascript
JS非行间样式获取函数的实例代码
2018/06/05 Javascript
jQuery实现基本淡入淡出效果的方法详解
2018/09/05 jQuery
JS实现马赛克图片效果完整示例
2019/04/13 Javascript
[54:54]Newbee vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
python网络编程之数据传输UDP实例分析
2015/05/20 Python
Python实现简单登录验证
2016/04/13 Python
python自动翻译实现方法
2016/05/28 Python
关于Python面向对象编程的知识点总结
2017/02/14 Python
利用Python将时间或时间间隔转为ISO 8601格式方法示例
2017/09/05 Python
python实现自动登录后台管理系统
2018/10/18 Python
scrapy-redis的安装部署步骤讲解
2019/02/27 Python
Python GUI库PyQt5样式QSS子控件介绍
2020/02/25 Python
Python Django路径配置实现过程解析
2020/11/05 Python
python邮件中附加文字、html、图片、附件实现方法
2021/01/04 Python
python time.strptime格式化实例详解
2021/02/03 Python
关于webview适配H5上传照片或者视频文件的方法
2020/11/04 HTML / CSS
Spartoo葡萄牙鞋类网站:线上销售鞋履与时尚配饰
2017/01/11 全球购物
ktv中秋节活动方案
2014/01/30 职场文书
2014年学习厉行节约反对浪费思想汇报
2014/09/10 职场文书
儿园租房协议书范本
2014/12/02 职场文书
雷锋之歌观后感
2015/06/10 职场文书
防溺水主题班会教案
2015/08/12 职场文书
python实现简单倒计时功能
2021/04/21 Python
Python代码,能玩30多款童年游戏!这些有几个是你玩过的
2021/04/27 Python
html css3不拉伸图片显示效果
2021/06/07 HTML / CSS
使用scrapy实现增量式爬取方式
2022/06/21 Python