探讨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&MYSQL分页原理及实现
Jan 02 PHP
PHP字符串比较函数strcmp()和strcasecmp()使用总结
Nov 19 PHP
PHP中new static() 和 new self() 的区别介绍
Jan 09 PHP
php获取英文姓名首字母的方法
Jul 13 PHP
PHP扩展框架之Yaf框架的安装与使用
May 18 PHP
php中简单的对称加密算法实现
Jan 05 PHP
wordpress网站转移到本地运行测试的方法
Mar 15 PHP
Yii2框架数据验证操作实例详解
May 02 PHP
PHP crypt()函数的用法讲解
Feb 15 PHP
php 比较获取两个数组相同和不同元素的例子(交集和差集)
Oct 18 PHP
PHP实现发送微博消息功能完整示例
Dec 04 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
十大催泪虐心动漫电影,有几部你还没看
2020/03/04 日漫
桌面中心(一)创建数据库
2006/10/09 PHP
php中随机显示图片的函数代码
2011/06/23 PHP
phpMyAdmin无法登陆的解决方法
2017/04/27 PHP
Laravel框架实现的使用smtp发送邮件功能示例
2019/03/12 PHP
HR vs CL BO3 第二场 2.13
2021/03/10 DOTA
JavaScript 特殊字符
2007/04/05 Javascript
网站导致浏览器崩溃的原因总结(多款浏览器) 推荐
2010/04/15 Javascript
jQuery.get、jQuery.getJSON、jQuery.post无法返回JSON问题的解决方法
2011/07/28 Javascript
IE的fireEvent方法概述及应用
2013/02/22 Javascript
JS使用for循环遍历Table的所有单元格内容
2014/08/21 Javascript
分享10个原生JavaScript技巧
2015/04/20 Javascript
jQuery checkbox选中问题之prop与attr注意点分析
2016/11/15 Javascript
解析JavaScript模仿块级作用域
2016/12/29 Javascript
两种简单的跨域方法(jsonp、php)
2017/01/02 Javascript
ionic2自定义cordova插件开发以及使用(Android)
2017/06/19 Javascript
Vue创建头部组件示例代码详解
2018/10/23 Javascript
JavaScript之Blob对象类型的具体使用方法
2019/11/29 Javascript
python双向链表实现实例代码
2013/11/21 Python
Tornado服务器中绑定域名、虚拟主机的方法
2014/08/22 Python
Python 数据处理库 pandas 入门教程基本操作
2018/04/19 Python
Pandas之MultiIndex对象的示例详解
2019/06/25 Python
用python打印1~20的整数实例讲解
2019/07/01 Python
jupyter notebook 多环境conda kernel配置方式
2020/04/10 Python
Manuka Doctor英国官网:真正的麦卢卡蜂蜜和护肤品
2018/10/26 全球购物
澳大利亚和新西兰最大的在线旅行社之一:Aunt Betty
2019/08/07 全球购物
教师个人自我鉴定
2014/02/08 职场文书
项目总经理岗位职责
2014/02/14 职场文书
团队精神的演讲稿
2014/05/14 职场文书
2015年初中元旦晚会活动总结
2014/11/28 职场文书
2015年读书月活动总结
2015/03/26 职场文书
2015年助残日活动总结
2015/03/27 职场文书
2015年部门工作总结范文
2015/03/31 职场文书
导游词创作书写原则以及开场白技巧怎么学?
2019/09/25 职场文书
晶体管来复再生式二管收音机
2021/04/22 无线电
深入理解CSS 中 transform matrix矩阵变换问题
2021/08/30 HTML / CSS