探讨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的FTP学习(一)
Oct 09 PHP
PHP COOKIE设置为浏览器进程
Jun 21 PHP
利用PHP脚本在Linux下用md5函数加密字符串的方法
Jun 29 PHP
PHP模拟QQ登录的方法
Jul 29 PHP
PHP测试成功的邮件发送案例
Oct 26 PHP
php获取指定数量随机字符串的方法
Feb 06 PHP
ThinkPHP like模糊查询,like多匹配查询,between查询,in查询,一般查询书写方法
Sep 26 PHP
PDO::errorInfo讲解
Jan 28 PHP
PHP crypt()函数的用法讲解
Feb 15 PHP
PHP PDO数据库操作预处理与注意事项
Mar 16 PHP
PHP高并发和大流量解决方案整理
Dec 24 PHP
php实现统计IP数及在线人数的示例代码
Jul 22 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导出oracle库的php代码
2009/04/20 PHP
php中设置index.php文件为只读的方法
2013/02/06 PHP
PHP身份证校验码计算方法
2016/08/10 PHP
PHP中Session ID的实现原理实例分析
2019/08/17 PHP
javascript基本类型详解
2014/11/28 Javascript
一看就懂:jsonp详解
2015/06/01 Javascript
JavaScript之AOP编程实例
2015/07/17 Javascript
全面解析Bootstrap布局组件应用
2016/02/22 Javascript
解析jQueryEasyUI的使用
2016/11/22 Javascript
Angular实现的日程表功能【可添加及隐藏显示内容】
2017/12/27 Javascript
浅谈webpack 构建性能优化策略小结
2018/06/13 Javascript
nodejs实现套接字服务功能详解
2018/06/21 NodeJs
老生常谈JS中的继承及实现代码
2018/07/06 Javascript
layui 监听表格复选框选中值的方法
2018/08/15 Javascript
Element MessageBox弹框的具体使用
2020/07/27 Javascript
[56:21]LGD vs IG 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python简单实现enum功能的方法
2016/04/25 Python
python实现求解列表中元素的排列和组合问题
2018/03/15 Python
Python多线程应用于自动化测试操作示例
2018/12/06 Python
Python基于Tkinter模块实现的弹球小游戏
2018/12/27 Python
python实现全盘扫描搜索功能的方法
2019/02/14 Python
python 操作hive pyhs2方式
2019/12/21 Python
Python表达式的优先级详解
2020/02/18 Python
从0到1使用python开发一个半自动答题小程序的实现
2020/05/12 Python
python try...finally...的实现方法
2020/11/25 Python
css3实现背景图片拉伸效果像桌面壁纸一样
2013/08/19 HTML / CSS
北卡罗来纳州豪华家具和家居装饰店:Carolina Rustica
2018/10/30 全球购物
FC-Moto美国:欧洲最大的摩托车服装和头盔商店之一
2019/08/24 全球购物
香港莎莎官网Sasa.com:亚洲著名国际化妆品商城
2019/11/10 全球购物
欧姆龙医疗欧洲有限公司:Omron Healthcare Europe B.V
2020/06/13 全球购物
C语言如何决定使用那种整数类型
2016/11/26 面试题
社区党员公开承诺书
2014/08/30 职场文书
优秀共产党员事迹材料2016
2016/02/29 职场文书
CSS实现五种常用的2D转换
2021/12/06 HTML / CSS
MySQL分区表管理命令汇总
2022/03/21 MySQL
Tomcat 与 maven 的安装与使用教程
2022/06/16 Servers