探讨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用户的在线管理的代码
Mar 06 PHP
php实现utf-8和GB2312编码相互转换函数代码
Feb 07 PHP
php使用qr生成二维码的示例分享
Jan 20 PHP
ThinkPHP调用百度翻译类实现在线翻译
Jun 26 PHP
Linux下创建nginx脚本-start、stop、reload…
Aug 03 PHP
php可生成缩略图的文件上传类实例
Dec 17 PHP
thinkphp3.x中变量的获取和过滤方法详解
May 20 PHP
PHP静态成员变量和非静态成员变量详解
Feb 14 PHP
windows下的WAMP环境搭建图文教程(推荐)
Jul 27 PHP
php实现网页上一页下一页翻页过程详解
Jun 28 PHP
PHP+fiddler抓包采集微信文章阅读数点赞数的思路详解
Dec 20 PHP
php libevent 功能与使用方法详解
Mar 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
PHP无限分类的类
2007/01/02 PHP
PHP文件去掉PHP注释空格的函数分析(PHP代码压缩)
2013/07/02 PHP
PHP中session变量的销毁
2014/02/27 PHP
PHP生成不重复标识符的方法
2014/11/21 PHP
php生成zip文件类实例
2015/04/07 PHP
详解 PHP加密解密字符串函数附源码下载
2015/12/18 PHP
PHP中的自动加载操作实现方法详解
2019/08/06 PHP
一个收集图片的bookmarlet(js 刷新页面中的图片)
2010/05/27 Javascript
对setInterval在火狐和chrome切换标签产生奇怪的效果之探索,与解决方案!
2011/10/29 Javascript
基于jquery的跟随屏幕滚动代码
2012/07/24 Javascript
简单实现异步编程promise模式
2015/07/31 Javascript
jQuery中的deferred对象和extend方法详解
2017/05/08 jQuery
从源码看angular/material2 中 dialog模块的实现方法
2017/10/18 Javascript
JS实现十字坐标跟随鼠标效果
2017/12/25 Javascript
理顺8个版本vue的区别(小结)
2018/09/17 Javascript
使用vue-cli3新建一个项目并写好基本配置(推荐)
2019/04/24 Javascript
JS中数据结构与算法---排序算法(Sort Algorithm)实例详解
2019/06/17 Javascript
JS开发自己的类库实例分析
2019/08/28 Javascript
python实现socket客户端和服务端简单示例
2014/02/24 Python
django接入新浪微博OAuth的方法
2015/06/29 Python
Python常用字符串替换函数strip、replace及sub用法示例
2018/05/21 Python
Python将list中的string批量转化成int/float的方法
2018/06/26 Python
浅谈django2.0 ForeignKey参数的变化
2019/08/06 Python
利用Python校准本地时间的方法教程
2019/10/31 Python
python异常处理try except过程解析
2020/02/03 Python
python json load json 数据后出现乱序的解决方案
2020/02/27 Python
Python函数参数分类原理详解
2020/05/28 Python
橄榄树药房:OLIVEDA
2019/09/01 全球购物
CLR与IL分别是什么含义
2016/08/23 面试题
师范毕业生自荐信
2013/10/17 职场文书
英语求职信范文
2014/05/23 职场文书
财务会计专业求职信
2014/06/09 职场文书
2016幼儿园新学期寄语
2015/12/03 职场文书
python生成随机数、随机字符、随机字符串
2021/04/06 Python
mysql在项目中怎么选事务隔离级别
2021/05/25 MySQL
浅谈mysql返回Boolean类型的几种情况
2021/06/04 MySQL