2011-12-11 13 views
2

私は誰かにこの機能を改善する方法についていくつかのご意見をいただけると願っています。その目的は、フォーム入力が有効な整数かどうかを評価することです。そうでない場合は、デフォルトでゼロを返します.2番目の引数がtrueの場合は-1を返します。コードチェック - オプションの戻り値で整数を検証する関数

EDIT:私が使用している機能のアップデート版です。 2つの最も困難な部分は、空文字列が空文字列に対して-1($ neg = true)を期待しているときに空文字列が0と評価されないようにすることと、左詰めゼロの入力を8進数ではなく整数として評価することです。

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; 
}