楼 主
index »
PHP安装/语法/函数 » [提问]在一个简单的计数器中遇到的问题?
作者:寻梦小子
注册时间:2005-05-20
主题/回复:12/14
积分:475
等级:★★☆(五级)
称号:略有小成
用户联系方式已设置为保密
发表:2005-05-26 15:31:57 阅读 2333 次 回复 3 次 得分1 |
字号
10px
12px
14px
16px
18px
20px
24px
字色
▅▅▅▅▅
▅▅▅▅▅
▅▅▅▅▅
▅▅▅▅▅
▅▅▅▅▅
▅▅▅▅▅
[提问]在一个简单的计数器中遇到的问题?
<?php
$fp = fopen("zzm.txt", "r");
$str1 = fgets($fp,10);
$str1++;
fclose($fp);
$fp = fopen("zzm.txt", "w");
fputs($fp, $str1);
fclose($fp);
$len1 = strlen($str1);
$str2 = "000000000";
$len2 = strlen($str);
$dif = $len2 - $len1;
$rest = substr($str2, 0, $dif);
$string = $rest.$str1;
echo ("您是第 $string 个访问者");
?>
这是一个简单的PHP计数器的小程序,可是我有一点不理解,就是在"$len2 = strlen($str); "中的$str,为什么不是$str2呢,strlen不是调用$str2这个变量吗?怎么在这里用"$str"和"str2"都可以呢,即用"$len2 = strlen($str);"或者"$len2 = strlen($str2);",程序都可以运行成功.请大家给我解释一下,好吗?
1#楼
回复人:一起PHP
注册时间:2004-02-27
主题/回复:247/1521
积分:4649
等级:★★★★★☆(十一级)
称号:论坛圣人
1#楼 发表于2005-05-26 16:23:24
评分:1
简单,问题出在substr()上面。
substr(string str,int start,int count)有至少三种用法:
举个例子:
<?php
$str="abcdefg";
echo substr($str,3,3); //输出 def
echo substr($str,0,-3); //输出 abcd
echo substr($str,-3); //输出 efg
?>
你的例子中,可能有输入错误,也可能是作者故意这么写的。就是$len2=strlen($str)。如果是作者写错了,这个地方应该是$str2。如果是作者故意这么写的,那么就是用了上面的第二种用法。
$str变量尚未定义,那么$len2的值就是0,下面 $len2-$Len1就是负数,也就是说$dif是负数,那么$rest=substr($str,0,$dif)就是上面例子中第二种用法,返回结果也是正确的。所以运行结果都正确。
总之,要么是作者知道substr的这些用法,故意这么写。还一个可能就是作者不知道这些用法,本来是想写$str2的,结果打错了,但是歪打正着。我估计是第二种可能性大。因为如果作者想用第二种用法,完全不用$len2=strlen($str),可以直接写$len2=0。
2#楼
回复人:寻梦小子
注册时间:2005-05-20
主题/回复:12/14
积分:475
等级:★★☆(五级)
称号:略有小成
用户联系方式已设置为保密
2#楼 发表于2005-05-27 01:13:36
评分:×
谢谢站长在百忙之中抽出时候来答复我,让我很快就理解了.也从中得到了一些知识,我将不断的努力,把PHP学好.也希望站长和各位高手在以后,可以多多指教.谢谢!
3#楼
回复人:一起PHP
注册时间:2004-02-27
主题/回复:247/1521
积分:4649
等级:★★★★★☆(十一级)
称号:论坛圣人
3#楼 发表于2005-05-28 02:48:18
评分:♂