探讨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的栏目导航程序
Oct 09 PHP
PHP生成UTF8文件的方法
May 15 PHP
如何用C语言编写PHP扩展的详解
Jun 13 PHP
php函数间的参数传递(值传递/引用传递)
Sep 23 PHP
php jquery 多文件上传简单实例
Dec 23 PHP
php获取网页请求状态程序示例
Jun 17 PHP
CentOS 安装 PHP5.5+Redis+XDebug+Nginx+MySQL全纪录
Mar 25 PHP
yii2分页之实现跳转到具体某页的实例代码
Jun 02 PHP
php实现的读取CSV文件函数示例
Feb 07 PHP
PHP实现可添加水印与生成缩略图的图片处理工具类
Jan 16 PHP
PHP集成环境XAMPP的安装与配置
Nov 13 PHP
laravel框架使用阿里云短信发送消息操作示例
Feb 15 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
thinkphp缓存技术详解
2014/12/09 PHP
php传值赋值和传地址赋值用法实例分析
2015/06/20 PHP
php自动加载方式集合
2016/04/04 PHP
Laravel 框架返回状态拦截代码
2019/10/18 PHP
Mootools 1.2教程 定时器和哈希简介
2009/09/15 Javascript
js获取图片长和宽度的代码
2009/11/24 Javascript
EASYUI TREEGRID异步加载数据实现方法
2012/08/22 Javascript
JS对select控件option选项的增删改查示例代码
2013/10/21 Javascript
jQuery实现“扫码阅读”功能
2015/01/21 Javascript
jquery实现简单的二级导航下拉菜单效果
2015/09/07 Javascript
BootStrap glyphicons 字体图标实现方法
2016/05/01 Javascript
JavaScript实战之带收放动画效果的导航菜单
2016/08/16 Javascript
vue实现ToDoList简单实例
2017/02/07 Javascript
js实现类bootstrap模态框动画
2017/02/07 Javascript
Vue中img的src属性绑定与static文件夹实例
2017/05/18 Javascript
ES6与CommonJS中的模块处理的区别
2018/06/13 Javascript
JavaScript动态添加数据到表单并提交的几种方式
2019/06/26 Javascript
微信小程序select下拉框实现源码
2019/11/08 Javascript
解决Vue router-link绑定事件不生效的问题
2020/07/22 Javascript
[06:48]DOTA2-DPC中国联赛2月26日Recap集锦
2021/03/11 DOTA
快速排序的算法思想及Python版快速排序的实现示例
2016/07/02 Python
Python两台电脑实现TCP通信的方法示例
2019/05/06 Python
python实现列表的排序方法分享
2019/07/01 Python
Jupyter notebook快速入门教程(推荐)
2020/05/18 Python
Keras之fit_generator与train_on_batch用法
2020/06/17 Python
python爬虫看看虎牙女主播中谁最“顶”步骤详解
2020/12/01 Python
美国豪华时尚女性精品店:Kirna Zabête
2018/01/11 全球购物
法制宣传月活动总结
2014/04/29 职场文书
党员自我剖析材料(群众路线)
2014/10/06 职场文书
房屋租赁意向书范本
2015/05/09 职场文书
本科毕业答辩开场白
2015/05/27 职场文书
元旦主持词开场白
2015/05/29 职场文书
《丑小鸭》教学反思
2016/02/19 职场文书
Pytorch 如何实现LSTM时间序列预测
2021/05/17 Python
css 边框添加四个角的实现代码
2021/10/16 HTML / CSS
mysql的Buffer Pool存储及原理
2022/04/02 MySQL