代码检查 - 用于验证具有可选返回值的整数的函数

时间:2011-12-11 05:56:06

标签: php

我希望有人可以就如何改进这个功能给我一些意见。其目的是评估表单输入是否为有效整数,如果不是,则默认返回零,如果第二个参数= 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;
        }        
    }
}

我一直盯着这个问题太长时间了,并且我确信我做得非常复杂。

1 个答案:

答案 0 :(得分: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;
}