Wenn nichts drin ist $_GET["id"], erhalte ich immer noch den Benachrichtigungsfehler. Wie kann ich diesen Fehler vermeiden?
verwenden isset($_GET['id']) oder array_key_exists('id', $_GET); .. eine Million Duplikate, die für diese Frage zu zählen sind ..
– dbf
6. August 2013 um 13:31 Uhr
if (isset($_GET[‘id’])){ $api = neue api($_GET[‘id’]); }
– Maximus2012
6. August 2013 um 13:32 Uhr
Ein PHP-Hinweis ist keine Ausnahme.
– Sangaran
6. August 2013 um 13:32 Uhr
@dbf vielleicht tut es das. Der Zugriff auf einen undefinierten Array-Index löst jedoch immer noch den NOTICE aus. Wenn das OP dies vermeiden möchte, sollte es einen geeigneten Fehlerbehandler einrichten, der die Benachrichtigung tatsächlich in eine Ausnahme “umwandelt”, oder er kann eine Ausnahme manuell auslösen, wenn !isset($_GET['id'])
– Sangaran
6. August 2013 um 13:41 Uhr
$api->processRequest(); löst Ausnahmen aus
– Asaf Newo
6. August 2013 um 13:49 Uhr
verwenden isset Funktion, um zu prüfen, ob die Variable gesetzt ist oder nicht:
Wenn Sie eine schnelle und “schmutzige” Lösung wünschen, können Sie verwenden
$api = new api(@$_GET["id"]);
Bearbeiten:
Seit PHP 7.0 gibt es eine viel bessere und akzeptierte Lösung: die Verwendung von Null-Koaleszenzoperator (??). Damit können Sie Ihren Code verkürzen
$api = new api($_GET["id"] ?? null);
und Sie erhalten keine Benachrichtigung, weil Sie definiert haben, was passieren soll, falls die Variable nicht definiert ist.
Für die Kinder zu Hause ist dies in der Tat schmutzig und Sie sollten dies nicht als Lösung betrachten.
– Jason McCreary
6. August 2013 um 13:39 Uhr
dies entspricht nicht dem Verhalten, nach dem der Fragesteller sucht.
– Pancho
28. März 2020 um 15:11 Uhr
Tassen
Wenn das Fehlen von id bedeutet, dass nichts verarbeitet werden soll, sollten Sie auf das Fehlen der id testen und den Fehler ordnungsgemäß handhaben.
if(!isset($_GET['id'] || empty($_GET['id']){
// abort early
}
DANN geh weiter und probiere/fange.
Es sei denn natürlich, Sie würden api() etwas intelligenter machen, damit es mit einer Standard-ID antwortet, die Sie in der Funktion deklarieren würden
function api($id = 1) {}
Es kommt also “alles darauf an”, aber versuche früh zu scheitern, wenn du kannst.
Beachten Sie, dass empty() löst keine Meldung aus, wenn die Variable nicht gesetzt ist. Als solche, isset() ist unnötig.
– Jason McCreary
6. August 2013 um 13:54 Uhr
Jonathan
Sie müssen Throwable not Exception fangen:
} catch (Throwable $e) {
Versuchen Sie zu überprüfen, ob die $_GET war eingestellt
<?php
if(isset($_GET['name'])){
$name = $_GET['name'];
}else{
$name = "Name not set in GET Method";
}
if(isset($_GET['age'])){
$name = $_GET['age'];
}else{
$name = "<br>Age not set in GET Method";
}
echo $name;
echo $age;
?>
Ihre Antwort könnte durch zusätzliche unterstützende Informationen verbessert werden. Bitte bearbeiten Sie, um weitere Details wie Zitate oder Dokumentation hinzuzufügen, damit andere bestätigen können, dass Ihre Antwort richtig ist. Weitere Informationen zum Verfassen guter Antworten finden Sie in der Hilfe.
– Gemeinschaft bot
16. Oktober 2021 um 18:40 Uhr
11588100cookie-checkPHP-Hinweis: Undefinierter Index trotz Verwendung von try\catchyes
verwenden
isset($_GET['id'])
oderarray_key_exists('id', $_GET);
.. eine Million Duplikate, die für diese Frage zu zählen sind ..– dbf
6. August 2013 um 13:31 Uhr
if (isset($_GET[‘id’])){ $api = neue api($_GET[‘id’]); }
– Maximus2012
6. August 2013 um 13:32 Uhr
Ein PHP-Hinweis ist keine Ausnahme.
– Sangaran
6. August 2013 um 13:32 Uhr
@dbf vielleicht tut es das. Der Zugriff auf einen undefinierten Array-Index löst jedoch immer noch den NOTICE aus. Wenn das OP dies vermeiden möchte, sollte es einen geeigneten Fehlerbehandler einrichten, der die Benachrichtigung tatsächlich in eine Ausnahme “umwandelt”, oder er kann eine Ausnahme manuell auslösen, wenn
!isset($_GET['id'])
– Sangaran
6. August 2013 um 13:41 Uhr
$api->processRequest();
löst Ausnahmen aus– Asaf Newo
6. August 2013 um 13:49 Uhr