2010-08-04 29 views
39

Cómo comprobar si $_GET está vacío?

Respuesta

98

Usted mismo lo ha dicho, compruebe que es empty:

if (empty($_GET)) { 
    // no data passed by get 
} 

Sede, PHP es tan sencillo. Simplemente escriba lo que piense;)

Este método es bastante seguro. !$_GET podría darle una variable indefinida E_NOTICE si $_GET fue desarmado (no es probable, pero es posible).

+0

no, su código no debería generar ningún error de nivel de aviso. –

+1

@ Frank Es cierto ... cuando todo va bien. Pero, ¿no es un aviso lo que esperas si $ _GET no está configurado? ¿No es el único propósito de tal aviso? –

+3

No, nunca desea que su código le envíe un aviso. Los errores de lanzamiento de código fuente de cualquier tipo siempre se consideran malos. – NikiC

7
<?php 
if (!isset($_GET) || empty($_GET)) 
{ 
    // do stuff here 
} 
+7

'! Isset ($ _ GET)' no es necesario en este caso, 'if (empty ($ _ GET))' sería suficiente –

+0

Vaya, mi mal. .. – john010117

+2

Solo FYI: $ _GET _puede ser desactivado, sin embargo, es muy raro configurar PHP de esa manera (vea 'variables_order') – Wrikken

12

supongo que la forma más sencilla que no requiere ningún operador es

if($_GET){ 
//do something if $_GET is set 
} 
if(!$_GET){ 
//do something if $_GET is NOT set 
} 
+1

-1 dado que podría arrojar un error de aviso. Usar empty para probar es una mejor alternativa. –

+3

+1 dado que no es necesario usar empty(). @premiso tiene algún ejemplo de la vida real para probar por qué es mejor? –

+0

Col, no, en realidad, no. Pero podría preguntar lo mismo de usted por qué el suyo es "mejor" y si puede proporcionarme ejemplos reales de por qué su solución es mejor, la respuesta real es ambas válidas (después de mis pruebas vagas). Así que sí, estaba equivocado para el downvote y si el usuario lo modifica lo cambiaré. De lo que se trata es de preferencia, prefiero usar el vacío. La única razón por la que puedo dar esto es que los cheques vacíos si un artículo está vacío.Dado que $ _GET no se establece, devuelve array (0) de var_dump, empty parece ser una mejor opción de usar, en mi opinión. –

3
if (!$_GET) echo "empty"; 

por qué se necesita una cuenta de cheques tales?

lol
muchachos de mente directa.
no se toma como una ofensa, pero a veces no importa en absoluto
$ _GET es una variable muy especial, no como otros.
se supone que siempre debe estar configurado. no es necesario tratarlo como otras variables. cuando $ _GET no está establecido y se espera - es caso de emergencia y eso es lo que "Undefined variable" aviso inventado para

+0

¡OMG! ¡DIOS MIO! Debes usar isset() !! ¡De lo contrario no es seguro! ¡1! – mario

+1

@mario tiene algún ejemplo para demostrar? –

+0

Hay una configuración ini llamada 'variables_order' que le permite establecer qué variables establecer y cuáles no establecer. Además, el programador puede desear desconectar '$ _GET', por el motivo que sea. – NikiC

2

me gustaría utilizar la siguiente instrucción if porque es más fácil de leer (y modificar en el futuro)


if(!isset($_GET) || !is_array($_GET) || count($_GET)==0) { 
    // empty, let's make sure it's an empty array for further reference 
    $_GET=array(); 
    // or unset it 
    // or set it to null 
    // etc... 
} 
+1

'if (! Empty ($ _ GET)) {}' es aún más fácil de leer. 'empty()' devuelve 'TRUE' si una matriz no contiene elementos. – kiamlaluno

+0

¿y si $ _GET es una cadena? o un objeto? He tropezado con scripts que arruinaron $ _GET y normalmente comprobo si la variable es del tipo "sé" que debería ser ... –

+0

eso es fácil. simplemente evite tales scripts :) Honestamente, su código es excesivo –

3

Fácil.

if (empty($_GET)) { 
    // $_GET is empty 
} 
8

Sólo para garantizar la diversión aquí: Usted puede comprobar para

if ($_SERVER["QUERY_STRING"] == null) 

es completamente idéntica a la prueba $_GET.

+0

+1 Pensé en lo mismo, pero no estaba seguro de lo que necesita comprobar. Contra '! Isset',' null' o ''''. ¿Funciona 'null' aquí, has probado? – NikiC

+0

@nikic yup, probado y funciona. Debido a que proviene de Apache, siempre estará configurado, incluso si está vacío, por lo que no es necesaria la comprobación 'array_key_exists()'. –

+0

cualquier cosa funcionará, niki –

2

Aquí hay 3 métodos diferentes para comprobar esto

<?php 
//Method 1 
if(!empty($_GET)) 
echo "exist"; 
else 
echo "do not exist"; 
//Method 2 
echo "<br>"; 
if($_GET) 
echo "exist"; 
else 
echo "do not exist"; 
//Method 3 
if(count($_GET)) 
echo "exist"; 
else 
echo "do not exist"; 
?> 
Cuestiones relacionadas