探讨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递归算法和应用方法介绍
Apr 15 PHP
解析使用substr截取UTF-8中文字符串出现乱码的问题
Jun 20 PHP
浅析ThinkPHP的模板输出功能
Jul 01 PHP
PHP实现自动对图片进行滚动显示的方法
Mar 12 PHP
PHP生成指定随机字符串的简单实现方法
Apr 01 PHP
PHP实现的构造sql语句类实例
Feb 03 PHP
PHP面向对象程序设计组合模式与装饰模式详解
Dec 02 PHP
php实现的读取CSV文件函数示例
Feb 07 PHP
自写的利用PDO对mysql数据库增删改查操作类
Feb 19 PHP
PHP使用 Pear 进行安装和卸载包的方法详解
Jul 08 PHP
Laravel 6 将新增为指定队列任务设置中间件的功能
Aug 06 PHP
Laravel 已登陆用户再次查看登陆页面的自动跳转设置方法
Sep 30 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实现蜘蛛访问日志统计
2013/07/05 PHP
PHP中的Session对象如何使用
2015/09/25 PHP
Yii2基于Ajax自动获取表单数据的方法
2016/08/10 PHP
PHP将整数数字转换为罗马数字实例分享
2019/03/17 PHP
Laravel 添加多语言提示信息的方法
2019/09/29 PHP
JavaScript实用技巧(一)
2010/08/16 Javascript
JavaScript Date对象 日期获取函数
2010/12/19 Javascript
JQuery的AJAX实现文件下载的小例子
2013/05/15 Javascript
解析window.open的使用方法总结
2013/06/19 Javascript
jQuery操作select下拉框的text值和value值的方法
2014/05/31 Javascript
javascript实现dom动态创建省市纵向列表菜单的方法
2015/05/14 Javascript
关于JS中match() 和 exec() 返回值和属性的测试
2016/03/21 Javascript
火狐和ie下获取javascript 获取event的方法(推荐)
2016/11/26 Javascript
javascript设计模式之模块模式学习笔记
2017/02/15 Javascript
简述vue路由打开一个新的窗口的方法
2018/11/29 Javascript
Vue.js中provide/inject实现响应式数据更新的方法示例
2019/10/16 Javascript
js属性对象的hasOwnProperty方法的使用
2021/02/05 Javascript
[01:00:53]2018DOTA2亚洲邀请赛3月29日 小组赛B组 iG VS Secret
2018/03/30 DOTA
轻量级的Web框架Flask 中模块化应用的实现
2017/09/11 Python
python Pandas 读取txt表格的实例
2018/04/29 Python
一文了解Python并发编程的工程实现方法
2019/05/31 Python
对Python 简单串口收发GUI界面的实例详解
2019/06/12 Python
pyqt5 QProgressBar清空进度条的实例
2019/06/21 Python
TensorFlow tf.nn.softmax_cross_entropy_with_logits的用法
2020/04/19 Python
Python实现ElGamal加密算法的示例代码
2020/06/19 Python
Django返回HTML文件的实现方法
2020/09/17 Python
湖南卫视在线视频媒体平台:芒果TV
2019/10/30 全球购物
食品行业求职人的自我评价
2014/01/19 职场文书
建筑系毕业生自我鉴定
2014/01/24 职场文书
村党组织公开承诺书
2015/04/30 职场文书
2015年法律事务部工作总结
2015/07/27 职场文书
思品教学工作总结
2015/08/10 职场文书
关于艺术节的开幕致辞
2016/03/04 职场文书
关于公司年会的开幕词
2016/03/04 职场文书
「魔法少女伊莉雅」美游粘土人开订
2022/03/21 日漫
Win11快速关闭所有广告推荐
2022/04/19 数码科技