探讨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程序实现支持页面后退的两种方法
Jun 30 PHP
PHP面向对象学习笔记之一 基础概念
Oct 06 PHP
浅析echo(),print(),print_r(),return之间的区别
Nov 27 PHP
php版淘宝网查询商品接口代码示例
Jun 17 PHP
php实现singleton()单例模式实例
Nov 06 PHP
php计划任务之ignore_user_abort函数实现方法
Jan 08 PHP
在html文件中也可以执行php语句的方法
Apr 09 PHP
typecho插件编写教程(一):Hello World
May 28 PHP
PHP多维数组遍历方法(2种实现方法)
Dec 10 PHP
Symfony2学习笔记之模板用法详解
Mar 17 PHP
PHPExcel笔记, mpdf导出
May 03 PHP
php远程请求CURL实例教程(爬虫、保存登录状态)
Dec 10 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
PHP4和PHP5性能测试和对比 测试代码与环境
2007/08/17 PHP
php回调函数处理数组操作示例
2020/04/13 PHP
CLASS_CONFUSION JS混淆 全源码
2007/12/12 Javascript
JQuery.ajax传递中文参数的解决方法 推荐
2011/03/28 Javascript
为原生js Array增加each方法
2012/04/07 Javascript
jquery提交form表单时禁止重复提交的方法
2014/02/13 Javascript
jquery.validate表单验证插件使用方法解析
2016/11/07 Javascript
详解AngularJS中$filter过滤器使用(自定义过滤器)
2017/02/04 Javascript
微信小程序上滑加载下拉刷新(onscrollLower)分批加载数据(二)
2017/05/11 Javascript
详解Webpack + ES6 最新环境搭建与配置
2018/06/04 Javascript
在vue2.0中引用element-ui组件库的方法
2018/06/21 Javascript
vue+element-ui动态生成多级表头的方法
2018/08/28 Javascript
在vue项目中,将juery设置为全局变量的方法
2018/09/25 Javascript
Python中用字符串调用函数或方法示例代码
2017/08/04 Python
Python numpy 点数组去重的实例
2018/04/18 Python
django+xadmin+djcelery实现后台管理定时任务
2018/08/14 Python
Python基于SMTP协议实现发送邮件功能详解
2018/08/14 Python
python调用百度地图WEB服务API获取地点对应坐标值
2019/01/16 Python
详解python执行shell脚本创建用户及相关操作
2019/04/11 Python
python快速编写单行注释多行注释的方法
2019/07/31 Python
python内置模块collections知识点总结
2019/12/19 Python
python 微信好友特征数据分析及可视化
2020/01/07 Python
Python中使用aiohttp模拟服务器出现错误问题及解决方法
2020/10/31 Python
HTML5+CSS3网页加载进度条的实现,下载进度条的代码实例
2016/12/30 HTML / CSS
HTML高亮关键字的实现代码
2018/10/22 HTML / CSS
HTML5实现应用程序缓存(Application Cache)
2020/06/16 HTML / CSS
城市观光通行证:The Sightseeing Pass
2018/04/28 全球购物
Java面试题:请问一下代码输出是什么
2015/05/27 面试题
团购业务员岗位职责
2014/03/15 职场文书
教学质量评估实施方案
2014/03/17 职场文书
学雷锋活动简报
2015/07/20 职场文书
2016暑期政治学习心得体会
2016/01/23 职场文书
班级元旦晚会开幕词
2016/03/04 职场文书
《飘》英文读后感五篇
2019/10/11 职场文书
Python 语言实现六大查找算法
2021/06/30 Python
node.js如何自定义实现一个EventEmitter
2021/07/16 Javascript