Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[经验] 【教程】第五讲:让模板绽放程序的光彩,如何在模板中写入php程序

[复制链接]
kongkang 发表于 2009-11-30 23:04:25 | 显示全部楼层 |阅读模式
转载请注明(作者:kongkang 来源:discuz论坛 或者 www.NGOsoft.com 恩久科技)
貌似很久都没有写教程了,最近不怎么来,但是并不等于我真的销声匿迹了,呵呵
刚看到有朋友回复了之前的教程,让我心血来潮,继续写一些教程吧,算是好久没有露面给大家的一点补偿

以前课程的回顾:
第一讲(https://discuz.dismall.com/thread-957572-1-1.html
第二讲(https://discuz.dismall.com/thread-958195-1-1.html
第三讲(https://discuz.dismall.com/thread-959556-1-1.html
第四讲(https://discuz.dismall.com/thread-972261-1-1.html

还是我之前的风格,咱们一边聊天,一边学习。
之前的四节课,基本上算是从一个只会html的新手慢慢尝试接触程序部分来写一些循环什么的。

这次课程,或许难度就有所提高了,如果你懂得php,那么就太好了。

模板作为程序开发的一部分,主要掌管的是显示部分,一些简单的判断和循环,也仅仅是为了更好的显示内容。

但是,很多时候我们需要一些简单的运算,而这些运算可能需要在模板生成过程中来实现的,让我做个举例。

现在我们在一个循环中来生成一个中间显示量:
  1. <!--{loop $array $key $value}-->
  2. <!--{eval $showKey = $key + 1;}-->
  3. <li>{$showKey} - {$value}</li>
  4. <!--{/loop}-->
复制代码
这个例子在之前的课程中讲过了,我大概说一下:
循环一个数组$array,将键值赋值给$key,键值$key对应的实际值赋值给$value;

而我们知道,键值如果是数字自动递增的话,一般来说,键值是从0开始。

这样,一个5条数据的列表中,键值就是0,1,2,3,4
但是,我们需要每个列表之前按照等差序列显示1,2,3,4,5怎么办?

上面的eval就是一种解决方法。

eval在php手册中可以查到,用通俗的方法去解释,就是eval后面跟着的参数或者代码,要“运行一次”。

这个我也说的不是很明白,我还是在模板中说明吧。

<!--{loop $array $key $value}-->
这句代表循环开始,直到<!--{/loop}-->这之前都是循环体,也就是说,数组中有多少个子元素,就要循环多少次,而每次的key值和value值都是成对替换的。
那么<!--{eval $showKey = $key + 1;}-->这一句中,就表示“把当前的$key加1赋值给$showKey”,那么这句以下的循环体内的代码,就可以直接调用{$showKey}来表示$key + 1的结果了。

这时候就会有朋友问了,为什么你不直接用$key + 1呢?

这个你可以自己试一下……
答:在模板中,所有的语句都是以字符串形式出现的,通过模板机制,将我们规定的语法转化成php理解的代码运行。
如果直接使用$key + 1的话,程序会理解成要显示{$key}的值后面跟着“+1”这样的字符串,最后显示是"xxx+1"这样的形式,而不是计算结果(xxx代表$key的值)

这样你就明白,我们介绍eval的意图就是,要让他先计算一次,然后把结果显示出来。

当然,最后,如果你脑子够好用,同样可以写出一个和例子执行结果相同的代码:
  1. <!--{loop $array $key $value}-->
  2. <li><!--{eval echo ($key + 1);}--> - {$value}</li>
  3. <!--{/loop}-->
复制代码
这期教程结束了,希望你已经会使用eval这个神奇的标签了。

_/_/_/_/_/_/_/ 华丽的分割线 _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
不写一段广告对不起自己,不想看的朋友可以忽略:
恩久科技是一个专注php程序开发的团队,所有成员全部精通Discuz系列的所有程序,包括UCH和UC的二次开发。
恩久科技被评为“漫游平台推荐开发者之一”,我们还会继续努力,为广大客户和站长奉献出更好的作品。
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ 小道消息 _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
恩久科技 将在2010年前开放我们积累很久的资料,包括快速二次开发的代码、资料和案例讲解等
期待优秀的开发者和希望成为开发者的朋友们关注我们的动作。
_/_/_/_/_/_/_/_/ 终于说完了 _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

评分

2

查看全部评分

 楼主| kongkang 发表于 2009-11-30 23:09:05 | 显示全部楼层
没有人回复,自己抢一个沙发……
回复

使用道具 举报

foolant 发表于 2009-12-1 00:14:38 | 显示全部楼层
代码分享, 只要我看见了就顶..
回复

使用道具 举报

foolant 发表于 2009-12-1 00:15:50 | 显示全部楼层
NGO? 厉害... 公益软件?
回复

使用道具 举报

foolant 发表于 2009-12-1 00:16:50 | 显示全部楼层
有没有已经开发出来的漫游作品?
回复

使用道具 举报

君之翼 发表于 2009-12-1 00:52:32 | 显示全部楼层
慢慢学习 顶起来
回复

使用道具 举报

zhuhaiyemen 发表于 2009-12-1 01:17:56 | 显示全部楼层
前排强力插入!支持下楼主
回复

使用道具 举报

Lzhou 发表于 2009-12-1 17:30:59 | 显示全部楼层
正好需要这个东东,感谢共享
回复

使用道具 举报

Imabird 发表于 2009-12-1 18:56:35 | 显示全部楼层
支持下...借宝地招友情链接,谢谢。 www.p2ping.com  要求百度google收录正常,做的PM或者Q我。
回复

使用道具 举报

kingtung 发表于 2009-12-1 20:16:55 | 显示全部楼层
支持哦,第一页呢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-12-26 09:11 , Processed in 0.032032 second(s), 6 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表