Hi,
in PHP gilt jeder wert ausser 0 (null), undefined und false als wahr, somit ist if(!$_GET) sehr wohl verwendbar. isset() würde ich verwenden, wenn ich wissen wollte, ob eine variable deklariert aber nicht initialisiert wurde.
PHP muss dennoch zuallererst feststellen, ob die Variable existiert (also isset() ausführen), bevor der Wert mit 0, undefined und false verglichen werden kann - wobei ich mir (ungeprüft) recht sicher bin, dass auch '' und [] als unwahr gelten. Gerade letzteres ist von der Prüfung her nicht mehr unbedingt trivial.
da $_GET _immer_ deklariert ist
Je nach PHP-Version.
_kann_ es IMO zu problemen kommen,
Welche denn? Du willst doch gerade prüfen, ob die PHP-Version $_GET kennt. Wenn dem so ist, ist die Variable - wie Du selbst sagst - immer deklariert, während sie im negativen Fall weder deklariert ist noch einen Inhalt hat (logischerweise). Im Falle "bekannt aber leer" wird PHP nach der Prüfung auf "leer" ein mit $_GET identisches Array zu kopieren haben (bzw. einen Pointer neu setzen; für die Details bin ich nicht tief genug in PHP drin), was nun eine unnötige Aktion darstellt.
Eher würde ich die Abfrage auf "if (isset($_GET) && $HTTP_GET_VARS)" erweitern, das könnte sich sogar als noch performanter erweisen.
Cheatah