Как проверить, существует ли $_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:\xampp\htdocs\myphp.php on line 9
!
Я искал способ исправить это, но я не могу найти способ проверить, существует ли переменная URL. Я знаю, что должен быть способ.
Ответы
Ответ 1
Вы можете использовать функцию isset
:
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);
Ответ 2
if (isset($_GET["id"])){
//do stuff
}
Ответ 3
Обычно это неплохо делать:
echo isset($_GET['id']) ? $_GET['id'] : 'wtf';
Это так, когда вы назначаете var другим переменным, вы можете делать по умолчанию все на одном дыхании, а не постоянно использовать операторы if
, чтобы просто дать им значение по умолчанию, если они не установлены.
Ответ 4
Вы используете PHP isset
Пример
if (isset($_GET["id"])) {
echo $_GET["id"];
}
Ответ 5
Использовать и empty()
с отрицанием (для теста, если не пустым)
if(!empty($_GET['id'])) {
// if get id is not empty
}
Ответ 6
Вы можете использовать array_key_exists()
встроенную функцию:
if (array_key_exists('id', $_GET)) {
echo $_GET['id'];
}
или isset()
встроенная функция:
if (isset($_GET['id'])) {
echo $_GET['id'];
}
Ответ 7
Попробуйте:
if(isset($_GET['id']) && !empty($_GET['id'])){
echo $_GET["id"];
}