0

配列でクエリ文字列を使用して$_REQUESTいて、任意のキーにアクセスするたびに、この条件を使用します

if(array_key_exists('scene_id', $_REQUEST))

$_REQUEST["scene_id"]警告やエラーなしで直接使用する方法はありますか?

4

4 に答える 4

4

もちろん、それを独自の関数でラップすることもできます。

function request($key, $default=null) {
    return isset($_REQUEST[$key])
        ? $_REQUEST[$key]
        : $default;
}

echo request('scene_id');
于 2012-09-12T13:37:03.740 に答える
1

issetを使用します:

if(isset($_REQUEST['scene_id']))

また

$scene_id = isset($_REQUEST['scene_id']) ? $_REQUEST['scene_id'] : null;
于 2012-09-12T13:35:21.117 に答える
0

最も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();
}

?>
于 2012-09-12T13:35:48.653 に答える
0

テストする前に、$_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
}
于 2012-09-12T13:38:45.300 に答える