Is_numeric()
値が0の場合はfalseをis_int()
返すだけでなく、特定の値がPHPでのみ数値であることを確認するにはどうすればよいですか?
正規表現陣営に直行するつもりですか、それとも、これに適した便利な機能がすでに存在するのでしょうか?
ありがとう!
どちらの場合でも、私にはtrueが返されます:
var_dump(is_numeric(0));
var_dump(is_int(0));
結果:
bool(true)
bool(true)
var_dump(is_int("0"));
文字列リテラルとしてゼロを渡しているため、false を渡します。通過した変数と同じものを渡してみることができます(私は信じています) parseInt("");
私のphpは少しずれているかもしれませんが、先週か2週間ノンストップでJavascriptをしていました。
これは、実際
0
にブール値である場合にも発生する可能性があります。常にブール値を返します。FALSE
is_numeric()
FALSE
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 で登場します。
私は同じ問題に苦労しました.数字の後にスペースがあることが起こりました.
簡単に言えば、番号が何であれ:
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