2011-02-02 7 views
3
function integer($str) 
    { 
     if(preg_match('/[^0-9]/', $str)) 
     { 
      return FALSE; 
     } 

     else 
     { 
      return $str; 
     } 
    } 

PHPでこの文の3項演算子を作成することはできますか?PHPでこのステートメントの三項演算子を作成できますか?

+2

これは学習の練習ではない場合、私は」 dは組み込みの 'is_int'関数を推奨します:http://php.net/manual/en/function.is-int.php –

+1

@SimpleCoder 'is_int(" 4 ")'はfalseを返します。 – lonesomeday

+0

@lonesomeday:ありがとう、私は 'is_numeric'を意味しました –

答えて

5

はい:

function integer($str) { 
    return (preg_match('/[^0-9]/', $str) ? false : $str); 
} 
+0

ありがとう!それは動作します。 –

+0

'$ str =" "'は '' ''を返すべきですか? – salathe

+0

@salathe - 彼のコード/プロセスを批判しないOPsの質問に対処するだけです。 – Rudu

3

あなたはそのためのctype_digitを使用する必要があります。

function integer($str) { 
    return ctype_digit($str) ? $str : false; 
} 

それともFILTER_VALIDATE_INTfilter_varを使用します。

function integer($str) { 
    return filter_var($str, FILTER_VALIDATE_INT, array(
     'options' => array('min_range' => 0), 
     'flags' => FILTER_FLAG_ALLOW_OCTAL 
    )); 
} 
+0

'filter_var'は最小値と最大値を許可するようにオプションで設定できるので、正の整数だけに制限することもできます。 – Gordon

+0

@Gordon:「min_range」だけを指定できますか? – NikiC

+1

@Gordon、re。 'FILTER_FLAG_ALLOW_OCTAL'フラグを参照してください。 – salathe

関連する問題