请问这是一个判断是否为整数的程序吗?
是的第7行为什么要判断是否为0,第10行为什么又要使用substr函数?
有什么用意?
去掉前导的0
如 000123 变成 123这个函数有画蛇添足的感觉
php已提供 is_int 函数
非要自己写的话,也只需
function isint($str){ 
  return $str == (int)$str;
}

解决方案 »

  1.   

    12   $int = (int)$str; 
    13   if($str==(string)$int) return true请问这2行什么作用?
    第12行把$str变为整数类型后,为什么又在第13行把它强制变为字符类型.
    直接进行比较不可以的吗?
      

  2.   

    如果$str='3x';
    $int=(int)$str;     // $str=>3
    (string)$int       // $int=>'3'
    $str==(string)$int  // 为false  如果直接比较
    $str==(int)$str    // 会自动把$str转换为int型比较 ,结果为true
    可以试试   echo '3x'==3, 结果为1唠叨给的函数是不对的, 用'3x'就可以试出来;
      

  3.   

    不过is_int函数从php3就开始有了,不知道为什么还需要这个函数
      

  4.   

    is_int函数替换自定义isint函数后,显示效果就不一样了,我也不知道什么原因,大家来看看!<?
    function a($ymd,$sep='-'){ 
       $parts = explode($sep,$ymd);      //切开字符串,返回到数组变量中
       $year = $parts[0]; 
       $month = $parts[1]; 
       $day = $parts[2];    if(isint($year) && isint($month) && isint($day)){ 
          if(checkdate($month,$day,$year)) 
      {
      return true; 
      }
          else return false; 
       } 
       else return false; 
    } function isint($str){ 
       $str = (string)$str;    $pos = 0; 
       $len = strlen($str); 
       for($i=0;$i<$len;$i++){ 
          if($str[$i]=='0') $pos++; 
          else break; 
       } 
       $str = substr($str,$pos);         
       $int = (int)$str; 
       if($str==(string)$int) return true; 
       else return false; 
    } //测试 
    $dates = array( 
                   '002000-4-11' => '-', 
                   '1900-2-1' => '-', 
                   '2001-03-01' => '-', 
                   'abaf' => '-', 
                   '20.03.05' => '.' ,
     "2000/18/12" => "/" ,
      "2000 12 12" => " "    
       ); 
    while(list($date,$sep)=each($dates)){ 
       if(a($date,$sep)) echo $date.' 是合法日期<br>'; 
       else echo $date.' 不是合法日期<br>'; 

    // 
    ?>
      

  5.   

    写这个代码的人一定是刚刚学完ANSI C的
      

  6.   

    is_int函数是判断是否为整数类型,我上面代码中把句子中单词拆分后是以字符串类型保存,所以用is_int函数判断是无效的!
      

  7.   

    你判断日期有效可以用strtotime啊,这样判断不准确