そのため、次のようなPHPコードがいくつかあります。
<body>
The ID is
<?php
echo $_GET["id"] . "!";
?>
</body>
これで、http://localhost/myphp.php?id=26
のようなIDを渡すと問題なく動作しますが、http://localhost/myphp.php
のようなIDがない場合は次のように出力されます。
The ID is
Notice: Undefined index: id in C:\xampp\htdocs\myphp.php on line 9
!
これを修正する方法を探しましたが、URL変数が存在するかどうかを確認する方法が見つかりません。しかし、方法があるはずです。
isset
関数を使用できます。
if(isset($_GET['id'])) {
// id index exists
}
インデックスが存在しない場合にデフォルト値を返す便利な関数を作成できます。
function Get($index, $defaultValue) {
return isset($_GET[$index]) ? $_GET[$index] : $defaultValue);
}
// prints "invalid id" if $_GET['id'] is not set
echo Get('id', 'invalid id');
同時に検証することもできます:
function GetInt($index, $defaultValue) {
return isset($_GET[$index]) && ctype_digit($_GET[$index])
? (int)$_GET[$index]
: $defaultValue);
}
// prints 0 if $_GET['id'] is not set or is not numeric
echo GetInt('id', 0);
if (isset($_GET["id"])){
//do stuff
}
通常、それは非常に良いことです:
echo isset($_GET['id']) ? $_GET['id'] : 'wtf';
これは、変数を他の変数に割り当てるときに、if
ステートメントを常に使用して設定されていない場合にデフォルト値を与える代わりに、デフォルトをすべて一気に実行できるようにするためです。
array_key_exists()
組み込み関数を使用できます。
if (array_key_exists('id', $_GET)) {
echo $_GET['id'];
}
または isset()
組み込み関数:
if (isset($_GET['id'])) {
echo $_GET['id'];
}
And empty()
whit negationを使用します(空でない場合のテスト用)
if(!empty($_GET['id'])) {
// if get id is not empty
}
試してみてください:
if(isset($_GET['id']) && !empty($_GET['id'])){
echo $_GET["id"];
}