4

index.phpこのスタイルのリンクが含まれています:

<a href="index.php?id=1">1</a>
<a href="index.php?id=2">2</a>

次に、このスタイルのPHPパッセージ:

if ($_GET["id"] == "1") {}
elseif ($_GET["id"] == "2") {}

したがって、リンクがクリックされると、ページが再ロードされ、if/elseifブロックの1つが実行されます。

index.phpただし、最初にロードすると、次のエラーが発生します: Undefined index:id

$_GET["id"]これは、デフォルト値が必要であることを意味していると思います。しかし、このデフォルト値をコードのどこに置くのですか?たとえば、"0"スクリプトの最初に値を指定すると、リロードのたびに値がリセットされ続けるため、コードブロックは実行されません。

4

7 に答える 7

4

最初に、設定されているかどうかを確認できます。

if (isset($_GET["id"])) {

    if ($_GET["id"] == "1") {

    } elseif ($_GET["id"] == "2") {

    }

}

issetは、変数が設定されていない場合にエラーを発行しない言語構造です。

emptyもエラーを発行しませんが、「空でない」値もチェックします。

于 2012-05-15T15:51:47.547 に答える
3

まず、デフォルト値を設定するようにアドバイスする回答を無視します。それは必須ではなく、ひどいデザインです。値を確認する前に、値が存在するかどうかを確認してください。

else/elseifチェーンの使用はお勧めしません。リンクが増えると、コードの醜さも増します。スイッチを使用します。

if(isset($_GET['id'])){

  switch($_GET['id']){
    case 1:
      // code
      break;
    case 2:
      // code
      break;
  }

}
于 2012-05-15T16:01:37.290 に答える
1

試す:

if (!isset($_GET["id"])) { $_GET["id"] = "0" }

于 2012-05-15T15:53:04.003 に答える
1

初めてページをロードするとき、そのページにはクエリパラメータがありません。

次の存在をチェックする別の条件内に条件をラップする必要がありますid

if (isset($_GET['id'])) {
    // you can use switch or keep the ifelseif chain
    switch ($_GET['id']) {
        case 1:
            // do stuff with 1
            break;

        case 2:
            // do stuff with 2
            break;
    }
}
于 2012-05-15T15:54:06.560 に答える
1

1つの解決策は、$ _ GET ['id']が空かどうかを確認することです。空の場合は、0に設定します。

if(empty($_GET['id']))
{
    $_GET['id'] = 0;
}
于 2012-05-15T15:52:09.373 に答える
0
$id = (isset($_GET['id'])) ? $_GET['id'] : null;

if ($id == "1") {}
} elseif ($id == "2") {}
于 2012-05-15T15:52:12.227 に答える
0

交換

if ($_GET["id"] == "1") {}

if (isset($_GET['id']) && $_GET['id']==1){} 
于 2012-05-15T16:25:30.617 に答える