|
![]() | 作者: snntss [snntss]
![]() |
登录 |
-------------------------------------------------------------------------------- <?php function aaa() { static $i=0; $i++; } for($j=0;$j<10;$j++) { aaa(); print("$i<br>"); } ?> 我本来是想打印 1 ~ 10 的, 但是又不能改动aaa()这个函数, 请问怎么解决?? |
地主 发表时间: 04-08-06 15:18 |
![]() | 回复: NetDemon [netdemon] ![]() |
登录 |
你print $j 嘛 关aaa()什么事呢 |
B1层 发表时间: 04-08-06 15:49 |
![]() | 回复: TomyChen [quest] ![]() |
登录 |
我大概看明白了... 他是想用aaa()使i++... 但是你的function里面又给i = 0;赋值了,就是说 每次执行aaa()的时候就给i赋0然后再++,永远都是1.... 不改函数!?行吗!? 方法1,用return 2 global $i; |
B2层 发表时间: 04-08-06 15:52 |
![]() | 回复: yingzike [yingzike] ![]() |
登录 |
//改aaa() <?php static $i=0; function aaa() { $i++; } for($j=0;$j<10;$j++) { aaa(); print("$i<br>"); } ?> //不改,好我就不改 <?php function aaa() { static $i=0; $i++; } for($j=0;$j<10;$j++) { aaa(); $i++; print("$i<br>"); } ?> //哈哈,乱搞笑呢,aaa()本身就有问题了,每次调用都初始化一下$i=0;正如同楼上说的 你只能改了,或者想其他方法 ![]() ![]() ![]() |
B3层 发表时间: 04-08-06 18:41 |
![]() | 回复: lqfrla [lqfrla] ![]() |
登录 |
![]() |
B4层 发表时间: 04-08-07 14:51 |
![]() | 回复: snntss [snntss] ![]() |
登录 |
yingzike 写的第一种改aaa()的方法我调试的时候为什么全为 0 啊,没有得到想到的1~10, 还有, 我最上面写的我调试的结果怎么会全为 3 呢? 它关 3 什么事了. |
B5层 发表时间: 04-08-10 14:20 |
![]() | 回复: snntss [snntss] ![]() |
登录 |
我的意思就和TomyChen 说的那样,通过aaa()来使$i++.而且必须得这样. 我按的 TomyChen 的意思写的用return ,但是仍然得不到我想要的结果: <?php static $i=0; function aaa() { $i++; return($i); } for($j=0;$j<10;$j++) { print(aaa()."<br>"); } ?> 当aaa()每次被调用的时候,$i的初始值总是 0,没有保存上次aaa()运行后的结果, 不知道要怎么写才对.请大家帮帮忙. [此贴被 飘萍浪影(snntss) 在 08月10日14时36分 编辑过] |
B6层 发表时间: 04-08-10 14:33 |
![]() | 回复: snntss [snntss] ![]() |
登录 |
哈哈,总算出来啦~ 原来 static 语句必须得写在aaa()的里面 ,写到外面声明表态变量不会成功, 也就得不到理想结果,yingzike 把它写到外面啦. 而我一开始的时候是写对了, 但是没有用return, 就是说运行aaa()后, 它没有带来任何东西,所以调用它也是白调用,最后还是没有得到想要的结果. ======================================================== 不过, 我在实际中碰到的问题比这要复杂些,类似如下问题: aaa()本来的动作是:首先作一个数据查询,然后然后打印一张表格. 因为我是给别人扩展系统的功能,所以我不能改动aaa()打印表格的功能,现在我给它加上一个功能,当扩展程序调用aaa()一次,$i就加 1,但是这时不能让它打印出表格,而只返回$i的值 现在的问题是如果我return($i),那么我调aaa(),它就会把把我不需要的表格也打印出来了. 类似如下 ======== <?php function aaa() { //--------------------------------原来的功能---------------------------------// print("<table width=100 border=1><tr><td>aaa</td><td>bbb</td></tr></table>"); //---------------------------------------------------------------------------// //--------------------------------新加的功能---------/-----------------------// static $i=0; $i++; return($i); } for($j=0;$j<10;$j++) { print(aaa()."<br>"); } ?> [此贴被 飘萍浪影(snntss) 在 08月10日15时12分 编辑过] [此贴被 飘萍浪影(snntss) 在 08月10日15时15分 编辑过] |
B7层 发表时间: 04-08-10 15:08 |
![]() | 回复: TomyChen [quest] ![]() |
登录 |
代码: 注意看看代码中的...global |
B8层 发表时间: 04-08-10 15:12 |
![]() | 回复: yingzike [yingzike] ![]() |
登录 |
试了一下自己说的两个,前面一个确实是0。$i,没有起到变化 <?php function aaa() { static $i=0; $i++; } for($j=0;$j<10;$j++) { aaa(); $i++; print("$i<br>"); } ?> 这一个也确实能出现$i变化的情况,可惜搞错了问题,此$i,非彼$i,在aaa()函数中的$i,是不会变到....6.7.8.9的,所以对此造成的误人子弟的做法向楼主表示谦意 ![]() 特罚yingzike面壁思过三天 ![]() ![]() ![]() |
B9层 发表时间: 04-08-11 18:27 |
![]() | 回复: SNNTSS [snntss] ![]() |
登录 |
难得这位仁兄这么热心了,还是要感谢你!![]() ![]() ![]() |
B10层 发表时间: 04-08-14 15:20 |
|
20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon
粤ICP备05087286号