Как проверить, существует ли $ GET?


Итак, у меня есть PHP-код, который выглядит примерно так:

<body>
    The ID is 

    <?php
    echo $_GET["id"] . "!";
    ?>

</body>

теперь, когда я передаю идентификатор, как http://localhost/myphp.php?id=26 он работает нормально, но если нет идентификатора, как просто http://localhost/myphp.php затем он выводит:

The ID is
Notice: Undefined index: id in C:xampphtdocsmyphp.php on line 9
!

Я искал способ исправить это, но я не могу найти способ проверить, существует ли переменная URL. Но я знаю, что должен быть способ.

7 52

7 ответов:

можно использовать :

if(isset($_GET['id'])) {
    // id index exists
}

вы можете создать удобную функцию для возврата значения по умолчанию, если индекс не существует:

function Get($index, $defaultValue) {
    return isset($_GET[$index]) ? $_GET[$index] : $defaultValue);
}

// prints "invalid id" if $_GET['id'] is not set
echo Get('id', 'invalid id');

вы также можете попробовать, чтобы проверить его в то же время:

function GetInt($index, $defaultValue) {
    return isset($_GET[$index]) && ctype_digit($_GET[$index])
            ? (int)$_GET[$index] 
            : $defaultValue);
}

// prints 0 if $_GET['id'] is not set or is not numeric
echo GetInt('id', 0);
   if (isset($_GET["id"])){
        //do stuff
    }

как правило, это достаточно хорошо, чтобы делать:

echo isset($_GET['id']) ? $_GET['id'] : 'wtf';

это так при назначении var для других переменных вы можете сделать по умолчанию все на одном дыхании вместо того, чтобы постоянно использовать if заявления, чтобы просто дать им значение по умолчанию, если они не установлены.

вы используете PHP isset

пример

if (isset($_GET["id"])) {
    echo $_GET["id"];
}

можно использовать array_key_exists() встроенные функции:

if (array_key_exists('id', $_GET)) {
    echo $_GET['id'];
}

или isset() встроенные функции:

if (isset($_GET['id'])) {
    echo $_GET['id'];
}

использовать и empty() ничуть отрицание (для теста, если не пусто)

if(!empty($_GET['id'])) {
    // if get id is not empty
}

пожалуйста, попробуйте это:

if(isset($_GET['id']) && !empty($_GET['id'])){
   echo $_GET["id"];
 }