欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

php数字类型判断,正整数、整数、正数、正小数、负整数、小数、负数、负小数

wordpress表单提交经常会判断数字,偶尔也会限制用户输入整数或小数,或不允许负数。

比如说会员站内转账,如果没有封闭负数的话,转账负数,会导致增加用户的资产,从而自己给自己充值。网上没有找到判断的写法。自己就测试研究。

同时发现一个问题,我用的xammp本地环境,使用 is_int() 无法或的数字的整/小数类型,不知道为什么,最后使用四舍五入的方式来判断

比如:

 
  1. $num=5;
  2. if(floor($num)==$num){$result=ture}else{$result=false};
  3. echo $result;
  4. //输出:true
  5.  
  6. $num=5.2;
  7. if(floor($num)==$num){$result=ture}else{$result=false};
  8. echo $result;
  9. //输出:false

 

以此思路,写入function中,代码如下。

 
  1. //正整数判断
  2. function positive_integer($num,$positive=true,$int=true){
  3.     if($num)
  4.     {
  5.         if(is_numeric($num)){
  6.             if($positive && $num>0 && !$int){
  7.                 return '正数';        //正数
  8.             }elseif($int && floor($num)==$num && !$positive){
  9.                 return '整数';        //整数
  10.             }elseif($positive && $int && $num>0 && floor($num)==$num){
  11.                 return '正整数';   //正整数
  12.             }elseif($positive && $int && $num>0 && floor($num)!=$num){
  13.                 return '正小数';   //正小数
  14.             }elseif($positive && $num<0 && !$int){
  15.                 return '负数';        //负数
  16.             }elseif($int && floor($num)!=$num && !$positive){
  17.                 return '小数';        //小数
  18.             }elseif($positive && $int && $num<0 && floor($num)!=$num){
  19.                 return '负小数';   //负小数
  20.             }elseif($positive && $int && $num<0 && floor($num)==$num){
  21.                 return '负整数';   //负整数
  22.             }else{
  23.                 return '未知类型的数字';
  24.             }
  25.         }else{
  26.             return '不是数字';  //不是数字
  27.         }
  28.     }elseif($num==='0'){
  29.         return '等于0';   //0
  30.     }else{
  31.         return '不存在';   //不存在
  32.     }
  33. }

 

使用方法:

 
  1. function positive_integer($num,$positive=true,$int=true);
  2.  
  3. /**
  4.  * $num            输入字符串
  5.  * $positive     正负判断开关
  6.  * $int               整数/小数判断开关
  7.  */

 

上面的方法,必须写名值等于那个。

如果function,想只用true和false作为结果的话。做以下修改即可

 
  1. function positive_integer($num,$positive=true,$int=true){
  2. /**
  3.  * $num         字符串判断
  4.  * $positive    正负判断
  5.  * $int         整数/小数判断
  6.  */
  7.  
  8.     if($num)
  9.     {
  10.         if(is_numeric($num)){
  11.             if($positive && $num>0 && !$int){
  12.                 return true;        //正数
  13.             }elseif($int && floor($num)==$num && !$positive){
  14.                 return true;        //整数
  15.             }elseif($positive && $int && $num>0 && floor($num)==$num){
  16.                 return true;    //正整数
  17.             }elseif($positive && $int && $num>0 && floor($num)!=$num){
  18.                 return true;    //正小数
  19.             }elseif($positive && $num<0 && !$int){
  20.                 return false;       //负数
  21.             }elseif($int && floor($num)!=$num && !$positive){
  22.                 return false;       //小数
  23.             }elseif($positive && $int && $num<0 && floor($num)!=$num){
  24.                 return false;   //负小数
  25.             }elseif($positive && $int && $num<0 && floor($num)==$num){
  26.                 return false;   //负整数
  27.             }else{
  28.                 return false; //未知类型的数字
  29.             }
  30.         }else{
  31.             return false;   //不是数字
  32.         }
  33.     }elseif($num==='0'){
  34.         return false;
  35.     }else{
  36.         return true;    //表单未填写
  37.     }
  38. }

 

使用方法:

 
  1. positive_integer($num);
  2. //判断正负和小数。结果为正整数true,负整数false
  3.  
  4. positive_integer($num,false);
  5. //不判断正负,只判断小数。结果为整数true,小数false
  6.  
  7. positive_integer($num,true,false);
  8. //判断正负,不判断小数。结果为正数true,负数false
  9.  
  10. //如果想判断是否为正小数,动下脑子:
  11. if(positive_integer($num,true,false) && !positive_integer($num,false)){
  12.     //正小数
  13. }
来自 http://fox-studio.net/31740.html
普通分类: