传过来都是字符串类型intval($str)==$str

解决方案 »

  1.   

    swotcoder(苦 丁):我上现的问题中有这句:“我用了诸如:is_int() ,is_real之类的函数,好像不太有效,”你看到了么? qiushuiwuhen(秋水无恨) :谢谢,你能详细说一下这个函数么?我的目的是判断表单传来的数据是不是(能不能转换成)int,float型,因为它们是要用来计算的,比如几本书呀,多少钱一本呀,。,。vivanboy(☆☆☆☆☆)(★★★★★) :谢谢,我好像不太懂你的意思。说明白点好么?
      

  2.   

    我的目的是判断表单传来的数据是不是(能不能转换成)int,float型,因为它们是要用来计算的,比如几本书呀,多少钱一本呀,。,。
    -----------------------------------------------------------正好用秋水大虾的方法。如果判断是否整数可以用我的方法
    if(intval($int)==$int)
      echo "是整数";用正这表达式也可以
      

  3.   

    is_numeric: 
     Finds whether a variable is a number or a numeric string
      

  4.   

    谢谢,回得这么快,我一直在线的。
    秋水大虾的方法我还不会用。if(intval($int)==$int)
      echo "是整数";
    //其中的intval($int)是整数了,而$int仍是字符串,可以么?
      

  5.   

    if(!(is_int((int)($BirthYear)) && is_int((int)($BirthMonth)) && is_int((int)($BirthDay))))
    { echo '时间输入格式有错误!';
      exit;
    }
    这时,这几个变量的值为"aaaa"都没事,if不成立。
      

  6.   

    is_int((int)($BirthYear)) 是什么意思?奇怪。你要判断一个东西是不是整数,又自己先把它强制转换成整数……
    就如同你要判断杯子里的东西是不是茶,你不管三七二十一,先把里面的东西换成茶……
    这不分明是自己骗自己吗?呵呵事实上,用 (int) 进行强制转换时,如果被转换的字符串不符合整数,就转换为 0:
    (int) "aaaa" = 0
    is_int( (int) "aaaa" ) 当然返回 true 啦(随便把 "aaaa" 换成什么都是 true)
    你没有理解 PHP 的“类型”的真正含义——PHP 不是 C 语言那种强类型语言,它的变量类型不过是个人为加的标签,就如同一堆肉,插上“狗肉”的牌子,它便是狗肉,插上“羊肉”的牌子,它便是羊肉(当然,要符合最起码的规则,例如 "aaaa" 无论如何也插不上“整数”的标签,硬插上了,它就只好变成 0)。你这里要判断的其实不是变量的“类型”,而是其内容!
    以上几位都说了,为了让你更清楚,给你个最笨的例子:// 判断一个字符串的内容是否符合整数的规定(即是否所有字符都是数字)
    function IsIntStr($str)
    {
        for ( $i = 0; $i < strlen($str); $i ++ )
        {
            $ch = $str[$i];
            if ( $ch < '0' || $ch > '9' )
                 return false;
        }
        return true;
    }如果你想知道用户提交的某个变量 $age (年龄)是否真的是整数:if ( IsInt($age) )
        echo "is integer";
    else
        echo "not integer";实际编程,人们可能使用正则表达式之类,比上面的简练多了,但基本原理都是一样的:判断给定字符串的内容是否符合某个规则——整数只能是
    "+-0123456789" 组成,实数可以再加上 ".eE" 这些东西,如果是特殊的整数,例如月份,你还要自己判断它是否在 1..12 之间。
      

  7.   

    【最后一段更正】如果你想知道用户提交的某个变量 $age (年龄)是否真的是整数(其实是符合整数规则的字符串):if ( IsIntStr($age) )
        echo "is integer";
    else
        echo "not integer";实际编程,人们可能使用正则表达式之类,比上面的简练多了,但基本原理都是一样的:判断给定字符串的内容是否符合某个规则——整数只能是
    "+-0123456789" 组成,实数可以再加上 ".eE" 这些东西,如果是特殊的整数,例如月份,你还要自己判断它是否在 1..12 之间。
    另外,PHP 中,一般也不必使用强制类型转换,PHP 会在必要时自动替你转换:$num1 = "123"; //字符串,但是符合整数的规则
    $num2 = $num1 * 2; //这是数的运算,所以自动把 $num1 转换为整数: $num2 = 123 * 2
    $str = $num1 . "abc"; //这是字符串的运算,所以把 $num1 当作字符串: $str = "123" . "abc"
      

  8.   

    $str
    if(______)
    {
    ......
    }
    else
    {
    .....
    }
    麻烦哪位给我填上一个正则表达式,要求判断$str是不是有效整数,再来一个判断是不是有效实数的,先谢了。
      

  9.   

    $str
    if(ereg("^([0-9])+$",$str))//整数的;
    {
    ......
    }
    else
    {
    .....
    }
    ereg("^([0-9])+(\.[0-9])*",$str)
      

  10.   

    实型的例子.
    <?php
    $mailstr="1.123412341234123";
    if(ereg("^([0-9])+(\.[0-9]{0,40})$",$mailstr)) {
    print "ok";
    }
    else {
    print "no";
    }
    ?>