2011-12-11 15 views
2

我希望有人可以给我一些关于如何改进此功能的输入。其目的是评估表单输入是否为有效整数,如果不是,则默认返回0,如果第二个参数= true,则返回-1。代码检查 - 验证具有可选返回值的整数的函数

编辑:这是我使用的功能的更新版本。看起来最具挑战性的两个部分是确保当空字符串($ neg = true)的值为-1时,空字符串不会评估为0,并评估具有左填充的零作为整数而不是八进制的输入。

function clean_integer($value, $neg=false) 
{ 
    if (!is_numeric($value)) { 
     if (!$neg) { 
      return 0; 
     else { 
      return -1; 
     } 
    } 
    $value = ltrim(trim($value), '0'); 
    if (!$neg) 
    { 
     if ($value !== true && ((string)(int) $value) === ((string) $value)) { 
      return (int) $value; 
     } 
     else { 
      return 0; 
     } 
    } 
    else 
    { 
     if (!is_numeric($value)) { 
      return 0; 
     } 
     if ($value !== true && ((string)(int) $value) === ((string) $value)) { 
      return (int) $value; 
     } 
     else { 
      return -1; 
     }   
    } 
} 

我一直盯着这个太长时间,我深信我正在让它变得非常复杂。

回答

5

为什么不投射它并使用is_int()方法? - http://php.net/manual/en/function.is-int.php

$num = (int) $theNumber; 
echo is_int($num); 

,以使其适应你的函数

function clean_integer($value, $neg=false) { 
    $num = $value; //removed the cast 
    if (!is_int($num)) { 
    return ($neg) ? -1 : 0;  
    } 
    return $num; 
}