首 页   · 站长博客 · 用户注册 · 会员登陆  · 会员排行  ·最新主题  ·最近回复  精华区  版权声明  ·论坛管理
  当前登录身份:游客,请先登录。  笔名: 口令: 验证码:   
楼 主  index »  PHP安装/语法/函数 » [提问]在一个简单的计数器中遇到的问题?  


  作者:寻梦小子
  注册时间:2005-05-20
  主题/回复:12/14
  积分:475
  等级:★★☆(五级)
  称号:略有小成

用户联系方式已设置为保密

 

 发表:2005-05-26 15:31:57 阅读 2332 次 回复 3 次 得分1  |   字号 字色
[提问]在一个简单的计数器中遇到的问题?
<?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  评分: 

呵呵,太客气了。
  页数1/1首页 « 1 » 末页
  发表回复:您还没有登陆,无法发表回复。请先[登陆]

一起PHP技术联盟 主办:一起PHP 联系方式:站长QQ:4304410 QQ群:8423742 20159565 站长博客 E-mail: nqp@nqp.me 执行时间:0.005sec
SimsmaBBS 2008 (v6.0) Developed by 17php.com,Copyright(C)2003-2010 All rights reserved. 副本授权:一起PHP官方专用版