2

私はtest.php以下のコードを持っています

<?php

    if(isset($_GET['p']) or $_GET['p'] != null) {
        echo $_GET['p'];
    } else {
        echo "Not found";
    }

?>

以下の URL をリストしました。必要な出力は次のとおりです。

Test 1 : http://localhost/example/test.php
output : Notice: Undefined index: p in R:\xampp\htdocs\example\test.php on line 3
        Not found


Test 2 : http://localhost/example/test.php?p
output : blank page



Test 3 : http://localhost/example/test.php?p=
output : blank page


Test 4 : http://localhost/example/test.php?p=1
output : 1

Test 1私はそれを受け入れTest 2ますtrue が、解決策Test 2Test 3失敗した場合。

4

5 に答える 5

6
<?php

if(!empty($_GET['p']))
    echo $_GET['p'];
else
    echo "Not found";
?>
于 2012-04-18T10:49:40.770 に答える
1
if(isset($_GET['p']) and $_GET['p'] != null) {
    echo $_GET['p'];
} else {
    echo "Not found";
}

and設定されていてnullでないことを確認したいので必要です。

他の人が指摘したように-使用できますempty()

if(!empty($_GET['p'])) {
    echo $_GET['p'];
} else {
    echo "Not found";
}

これはtrue、値が空の場合に返されます。以下は空と見なされます。

  • ""(空の文字列)
  • 0(0 は整数)
  • 0.0(浮動小数点として 0)
  • "0"(文字列として 0)
  • NULL
  • FALSE
  • array()(空の配列)
  • var $var;(変数は宣言されていますが、クラスには値がありません)
于 2012-04-18T10:47:44.317 に答える
0

empty()の代わりに使用する必要がありisset()ます。

<?php

if(empty($_GET['p'])) {
    echo "Not found";
} else {
    echo $_GET['p'];
}
于 2012-04-18T10:50:07.920 に答える
0
<?php

    if(isset($_GET['p']) and $_GET['p'] != null) {
        echo $_GET['p'];
    } else {
        echo "Not found";
    }

?>

あなたが言及した上記のコードは、 試してみるとor次のいずれかになりますtrueand

<?php

    if(isset($_GET['p']) and $_GET['p'] != null) {
        echo $_GET['p'];
    } else {
        echo "Not found";
    }

?>

そして、それは完璧に機能します。

于 2012-04-18T10:47:43.380 に答える
0

OR を使用しているため、2 番目のテストは常に実行されます。つまり、設定されていない場合でもアクセスを試みます。代わりに AND ( &&) を使用すると、値が存在する場合にのみチェックされます。

于 2012-04-18T10:47:50.180 に答える