配列でクエリ文字列を使用して$_REQUEST
いて、任意のキーにアクセスするたびに、この条件を使用します
if(array_key_exists('scene_id', $_REQUEST))
$_REQUEST["scene_id"]
警告やエラーなしで直接使用する方法はありますか?
配列でクエリ文字列を使用して$_REQUEST
いて、任意のキーにアクセスするたびに、この条件を使用します
if(array_key_exists('scene_id', $_REQUEST))
$_REQUEST["scene_id"]
警告やエラーなしで直接使用する方法はありますか?
もちろん、それを独自の関数でラップすることもできます。
function request($key, $default=null) {
return isset($_REQUEST[$key])
? $_REQUEST[$key]
: $default;
}
echo request('scene_id');
issetを使用します:
if(isset($_REQUEST['scene_id']))
また
$scene_id = isset($_REQUEST['scene_id']) ? $_REQUEST['scene_id'] : null;
最もprefredの方法は、isset if(isset($_REQUEST['scene_id']))
を使用することですが、実際には@
signを使用してエラーメッセージを抑制することができますが、エラーは引き続き存在し、正しく処理する必要があることに注意してください。
PHPドキュメントから
PHP supports one error control operator: the at sign (@). When prepended to an expression in PHP, any error messages that might be generated by that expression will be ignored.
例1
if(@$_REQUEST['scene_id'])
{
echo "ok" ;
}
例2(フィルター、検証、または例外)
try {
if (!isset($_REQUEST['scene_id']))
throw new Exception("Missing Scene ID");
if (!filter_var($_REQUEST['scene_id'], FILTER_SANITIZE_NUMBER_INT))
throw new Exception("Only Valid Number Allowed");
echo "Output ", $_REQUEST['scene_id'];
} catch ( Exception $e ) {
print $e->getMessage();
}
?>
テストする前に、$_REQUESTにデフォルト値を事前入力できます。
$expected = array(
'scene_id'=>false,
'another_var'=>'foo',
);
foreach($exptected as $key=>$default) {
if (!isset($_REQUEST[$key])) {
$_REQUEST[$key] = $default;
}
}
if ($_REQUEST['scene_id') {
// do stuff
}