探讨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 危险函数解释 分析
Apr 22 PHP
PHP XML操作类DOMDocument
Dec 16 PHP
php学习笔记 php中面向对象三大特性之一[封装性]的应用
Jun 13 PHP
php skymvc 一款轻量、简单的php
Jun 28 PHP
PHP中将网页导出为Word文档的代码
May 25 PHP
php 模拟POST提交的2种方法详解
Jun 17 PHP
php中ltrim()、rtrim()与trim()删除字符空格实例
Nov 25 PHP
CI配置多数据库访问的方法
Mar 28 PHP
Yii2中OAuth扩展及QQ互联登录实现方法
May 16 PHP
PHP常见的几种攻击方式实例小结
Apr 29 PHP
在laravel中使用with实现动态添加where条件
Oct 10 PHP
laravel入门知识点整理
Sep 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
php下intval()和(int)转换使用与区别
2008/07/18 PHP
MayFish PHP的MVC架构的开发框架
2009/08/13 PHP
ThinkPHP采用实现三级循环代码实例
2014/07/18 PHP
JavaScript操作cookie类实例
2015/03/31 Javascript
jquery+html5制作超酷的圆盘时钟表
2015/04/14 Javascript
js原型链与继承解析(初体验)
2016/05/09 Javascript
RequireJS使用注意细节
2016/05/15 Javascript
JavaScript中对象的不同创建方法
2016/08/12 Javascript
jQuery加载及解析XML文件的方法实例分析
2017/01/22 Javascript
基于dataset的使用和图片延时加载的实现方法
2017/12/11 Javascript
element-ui上传一张图片后隐藏上传按钮功能
2019/05/22 Javascript
React实现轮播效果
2020/08/25 Javascript
[33:33]完美世界DOTA2联赛PWL S2 FTD.C vs SZ 第二场 11.27
2020/11/30 DOTA
linux系统使用python监控apache服务器进程脚本分享
2014/01/15 Python
简单介绍Python的轻便web框架Bottle
2015/04/08 Python
在Python中使用列表生成式的教程
2015/04/27 Python
Python基于百度AI的文字识别的示例
2018/04/21 Python
对python实时得到鼠标位置的示例讲解
2018/10/14 Python
python实现任意位置文件分割的实例
2018/12/14 Python
详解django中url路由配置及渲染方式
2019/02/25 Python
使用pyinstaller打包PyQt4程序遇到的问题及解决方法
2019/06/24 Python
Window10上Tensorflow的安装(CPU和GPU版本)
2020/12/15 Python
如何用Django处理gzip数据流
2021/01/29 Python
美国酒店控股公司:Choice Hotels
2018/06/15 全球购物
初中高效课堂实施方案
2014/02/26 职场文书
村级环境卫生整治方案
2014/05/04 职场文书
信用卡逾期证明示例
2014/09/13 职场文书
大学新生军训自我鉴定
2014/09/18 职场文书
工伤事故赔偿协议书范文
2014/09/24 职场文书
初中家长评语和期望
2014/12/26 职场文书
2015年客房服务员工作总结
2015/05/15 职场文书
入党转正介绍人意见
2015/06/03 职场文书
爱国主义影片观后感
2015/06/18 职场文书
三十年同学聚会致辞
2015/07/28 职场文书
MySQL创建高性能索引的全步骤
2021/05/02 MySQL
MySQL8.0的WITH查询详情
2021/08/30 MySQL