11

Is_numeric()値が0の場合はfalseをis_int()返すだけでなく、特定の値がPHPでのみ数値であることを確認するにはどうすればよいですか?

正規表現陣営に直行するつもりですか、それとも、これに適した便利な機能がすでに存在するのでしょうか?

ありがとう!

4

7 に答える 7

6

どちらの場合でも、私にはtrueが返されます:

var_dump(is_numeric(0));
var_dump(is_int(0));

結果:

bool(true)
bool(true)
于 2010-05-05T15:17:45.223 に答える
0
var_dump(is_int("0"));

文字列リテラルとしてゼロを渡しているため、false を渡します。通過した変数と同じものを渡してみることができます(私は信じています) parseInt("");

私のphpは少しずれているかもしれませんが、先週か2週間ノンストップでJavascriptをしていました。

于 2010-05-05T15:24:52.727 に答える
0

これは、実際 0にブール値である場合にも発生する可能性があります。常にブール値を返します。FALSEis_numeric()FALSE

于 2015-12-11T20:49:56.900 に答える
0

REQUEST を扱う場合は、まず filter_input を使用して入力を確認することをお勧めします。$_GET からの「id」のチェックの例を次に示します。

filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT)

完全な例

if (is_int(filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT))) {
        $id = $_GET['id'];
} else {
        die('please input a integer');
}

まあ、この機能はバージョン PHP >= 5.2 で登場します。

于 2015-07-13T21:41:49.207 に答える
0

私は同じ問題に苦労しました.数字の後にスペースがあることが起こりました.

簡単に言えば、番号が何であれ:

is_numeric(" 0.0") --> YES
is_numeric("0.0 ") --> NO

ここに例があります...

public function getCoordinates()
{
    return sprintf('%1$f , %2$f',$this->getLatitude(),$this->getLongitude());
}

プロセスの後半で...

        $myarr = explode(",",$_ScreenCoordinates);
        echo "_ScreenCoordinates:$_ScreenCoordinates<br>";
        echo "myarr[0]:".$myarr[0]." - ".((is_numeric($myarr[0]))?"YES":"NO")."<br>";
        echo "myarr[1]:".$myarr[1]." - ".((is_numeric($myarr[1]))?"YES":"NO")."<br>";
        echo "trimmed[0]:".$myarr[0]." - ".((is_numeric(trim($myarr[0])))?"YES":"NO")."<br>";

画面に印刷:

Array ( [0] => 1.200000 [1] => 123.456000 )
_ScreenCoordinates:1.200000 , 123.456000
myarr[0]:*1.200000 * - NO
myarr[1]:* 123.456000* - YES
trimmed[0]:*1.200000 * - YES
于 2015-08-21T20:38:00.090 に答える