2010-03-19 12 views
12

estoy confundido a veces con el uso de los cuales uno de ellos,¿Qué función debo usar para probar si hay una var o no?

decir que tengo una función llamada getmember($id)

function getmember($id) 
{ 

// now this is the confusing part 
// how do i test if a $id was set or not set? 

//solution 1 
if(empty($id)) 
{ 
return false; 
} 


// solution 2 

if(isset($id)) 
{ 
return false; 
} 

} 

Que a veces no me queda claro, a veces, si un parámetro en una función se establece como function($var="")

Entonces hago

if($var ==="") 
{ 
return false; 
} 

¿Qué debo usar la próxima vez isset ? empty ? or ===''?

Respuesta

10

Aquí tienes, un desglose completo de lo que funciona y cuando:

<? 
echo "<pre>"; 
$nullVariable = null; 

echo 'is_null($nullVariable) = ' . (is_null($nullVariable) ? 'TRUE' : 'FALSE') . "\n"; 
echo 'empty($nullVariable) = ' . (empty($nullVariable) ? 'TRUE' : 'FALSE') . "\n"; 
echo 'isset($nullVariable) = ' . (isset($nullVariable) ? 'TRUE' : 'FALSE') . "\n"; 
echo '(bool)$nullVariable = ' . ($nullVariable ? 'TRUE' : 'FALSE') . "\n\n"; 

$emptyString = ''; 

echo 'is_null($emptyString) = ' . (is_null($emptyString) ? 'TRUE' : 'FALSE') . "\n"; 
echo 'empty($emptyString) = ' . (empty($emptyString) ? 'TRUE' : 'FALSE') . "\n"; 
echo 'isset($emptyString) = ' . (isset($emptyString) ? 'TRUE' : 'FALSE') . "\n"; 
echo '(bool)$emptyString = ' . ($emptyString ? 'TRUE' : 'FALSE') . "\n\n"; 

//note that the only one that won't throw an error is isset() 
echo 'is_null($nonexistantVariable) = ' . (@is_null($nonexistantVariable) ? 'TRUE' : 'FALSE') . "\n"; 
echo 'empty($nonexistantVariable) = ' . (@empty($nonexistantVariable) ? 'TRUE' : 'FALSE') . "\n"; 
echo 'isset($nonexistantVariable) = ' . (isset($nonexistantVariable) ? 'TRUE' : 'FALSE') . "\n"; 
echo '(bool)$nonexistantVariable = ' . (@$nonexistantVariable ? 'TRUE' : 'FALSE') . "\n\n"; 
?> 

LA SALIDA:

is_null($nullVariable) = TRUE 
empty($nullVariable) = TRUE 
isset($nullVariable) = FALSE 
(bool)$nullVariable = FALSE 

is_null($emptyString) = FALSE 
empty($emptyString) = TRUE 
isset($emptyString) = TRUE 
(bool)$emptyString = FALSE 

is_null($nonexistantVariable) = TRUE 
empty($nonexistantVariable) = TRUE 
isset($nonexistantVariable) = FALSE 
(bool)$nonexistantVariable = FALSE 

cuando muestro (bool)$variable anteriormente, es decir cómo se puede utilizar en un condicional Por ejemplo, para comprobar si una variable es nulo o vacío, se podría hacer:

if (!$variable) 
    echo "variable is either null or empty!"; 

Pero lo mejor es utilizar una función ya que es un poco más fácil de leer. Pero es tu elección.

También, marque the PHP type comparison table. Básicamente es lo que acabo de hacer arriba, excepto mucho más.

+0

completa y exacta, 1 – dnagirl

+0

Yepp también una 1 de mí gracias por la explicación – streetparade

3

Si simplemente desea saber si se define una variable, utilice isset()

Si usted quiere ver si se ha inicializado, utilice is_null()

Si desea comparar su valor a otra cosa, utilizar ==

+0

'empty' es mejor que' is_null() 'ya que a veces las variables se inicializan con una cadena de longitud cero como' $ x = ' '; ' – Andy

+0

Creo que is_null es verdadero en value = null o no se configuró antes? – streetparade

Cuestiones relacionadas