8

'get'変数の値を読み取ろうとすると、その変数がURLに設定されていなかった場合はどうなりますか。例:ページをリクエストするtest.phpと、そのファイルで。の値を読み取ろうとします$_GET['message']。この場合はどうなりますか?値は次のように返され''ますか?

これは、値が入力されることを常に期待していて、''の値を受け入れたくない場合、次のようなことができることを意味しますか?

$foo = $_GET['bar'];
if($foo == ''){
  // Handle my 'error'
}
else
{
  // $foo should now have a value that I can work with
}

使用できることはisset($_GET['bar'])わかっていますが、設定されているかどうかだけではなく、設定されているかどうかは関係ありません。値が空以上であるかどうかだけが気になります。ストリング。

4

5 に答える 5

7

値が実際に設定されているかどうか気にしない場合は、これを使用できます。

if (empty($_GET['bar']))
    // value is null, false, 0, '0' or an empty string (including whitespace).
于 2010-04-19T10:24:40.457 に答える
6

存在しない配列アイテムにアクセスしようとすると、結果はになりますnull

$foo = $_GET['bar']; //$foo is now null

厳密な比較ではなく弱い比較演算子 を使用している場合は、nullとして扱われることに注意してください。=====''

上記のコードの欠点は、存在しないインデックスを使用して配列にアクセスすると通知が生成されることです。これは少し面倒です。

したがって、含まれている値を変数に割り当てる前に、値が設定されているかどうかを確認する必要があります。

if ( !isset($_GET['bar']) ){
    //handle error or assign default value to $foo
}else{
    $foo = $_GET['bar'];
}

デフォルト値が必要で、$ _ GET値が存在する場合にのみそのデフォルト値を置き換える場合は、条件演算子を使用できます(「3項演算子」までスクロールダウンします)。

$foo = isset($_GET['bar']) ? $_GET['bar'] : 'default value';
于 2010-04-19T10:17:19.053 に答える
0

私が正しく理解していれば、それは次のとおりです。

$foo = $_GET['bar'];
if ((!isset($foo)) || $foo == '') {
//GET veriable not set, error
}
else {
// GET veriable set, code here.
}
于 2010-04-19T10:15:26.623 に答える
0

もう 1 つの方法は、PHP のfilter_input関数を使用することです。

$foo = filter_input(INPUT_GET, 'bar');
if (empty($foo)) {
    // Handle my 'error'
} else {
    // $foo should now have a value that I can worth with
}
于 2022-02-03T21:47:30.443 に答える