empty
;true
を指定すると返されます。0
代わりに使用isset
して、設定されているかどうかを確認できます(値に関係なく):
if(isset($_GET['number']))
http://php.net/emptyから:
var が空でもゼロでもない値を持つ場合、FALSE を返します。
次のものは空と見なされます。
""
(空の文字列)
0
(0 は整数)
0.0
(浮動小数点として 0)
"0"
(文字列として 0)
NULL
FALSE
array()
(空の配列)
var $var;
(変数は宣言されていますが、クラスには値がありません)
私のテスト:
$_GET['number'] = "0";
assert(isset($_GET['number']));
$_GET['number'] = 0;
assert(isset($_GET['number']));
コードは次のようになります。
if(!isset($_GET['number'])) {
echo "No GET variables";
}
if(isset($_GET['number'])) {
$number=strip_tags(addslashes(htmlspecialchars($_GET['number'])));
echo $number;
}
またはもっと簡潔に
if(!isset($_GET['number'])) {
echo "No GET variables";
} else {
$number=strip_tags(addslashes(htmlspecialchars($_GET['number'])));
echo $number;
}