2012-01-08 15 views
26
if ($user_id == NULL || $user_name == NULL || $user_logged == NULL) { 
    $user_id = '-1'; 
    $user_name = NULL; 
    $user_logged = NULL; 
} 
if ($user_admin == NULL) { 
    $user_admin = NULL; 
} 
  1. ¿Hay algún camino más corto para hacerlo?
  2. Y si estoy en lo cierto, ¿debería probarse con is_null?
  3. Es posible $user_id, $user_name y $user_logged escribir en una línea (¿quizás matriz?) Sin repetir NULL?
+0

* (sugerido) * http://stackoverflow.com/questions/381265/better-way-to-check-variable-for-null-or-empty-string – Gerep

+0

Creo que se puede crear una función para eso ... – Gerep

Respuesta

59

Si desea probar si una variable es realmenteNULL, utilice el operador de identidad:

$user_id === NULL // FALSE == NULL is true, FALSE === NULL is false 
is_null($user_id) 

Si desea comprobar si una variable no se establece:

!isset($user_id) 

O si la variable no está vacía, una cadena vacía, cero, ..:

empty($user_id) 

Si desea probar si una variable no es una cadena vacía, ! también serán suficientes:

!$user_id 
+1

Tenga en cuenta también que 'isset()' acepta un número ilimitado de argumentos. – DaveRandom

+0

También tenga en cuenta que porque él está usando '==' arriba y no '===', todo lo que se está haciendo efectivamente es 'if (! $ Var ||! $ Var ...' – DaveRandom

+2

Sí, documentación en: [ 'isset'] (http://php.net/manual/en/function.isset.php), [' is_null'] (http://php.net/manual/en/function.is-null.php) , ['empty'] (http://php.net/manual/en/function.empty.php). A juzgar por el código, supongo que las variables tienen que ser una cadena. Por lo tanto, recomiendo: **' if (! is_string ($ user_id) || $ user_id === '') '**. –

1

empty() es un poco más corto, como una alternativa a la comprobación !$user_id como se sugiere en otra parte:

if (empty($user_id) || empty($user_name) || empty($user_logged)) { 
} 
6

Puede verificar si no está configurado (o vacío) de varias maneras.

if (!$var){ } 

O:

if ($var === null){ } // This checks if the variable, by type, IS null. 

O:

if (empty($var)){ } 

Puede comprobar si se declara con:

if (!isset($var)){ } 

tomar en cuenta que PHP interpreta 0 (entero) y "" (cadena vacía) y falso como "vacío" - y di A pesar de ser diferentes tipos, estos valores específicos son por PHP considerado el mismo. No importa si $ var nunca se establece/declara o si se declara como $ var = 0 o $ var = "". Muy a menudo se compara usando el operador === que se compara con respecto al tipo de datos. Si $ var es 0 (entero), $ var == "" o $ var == falso se validará, pero $ var === "" o $ var === falso no lo hará.

+1

'! isset ($ var) 'verifica si la variable no está definida y no si está vacía o no. – noob

+1

Verdadero - y reparado :) –

0

1.

if(!($user_id || $user_name || $user_logged)){ 
    //do your stuff 
} 

2. No. En realidad, no entendí por qué escribes una construcción así.

3. Coloque todos los valores en una matriz, por ejemplo $ ar ["user_id"], etc.

0

Defina lo que quiere decir con "vacío".

La prueba que normalmente uso es isset().

+0

@micha por lo tanto, mi primera línea - "vacía" es algo ambigua. – Alnitak

+0

isset apesta en la mayoría de los casos. –

0

puede usar la rutina isset().

también adicionalmente puede consultar una gama de is_type() funciona como

is_string(), is_float(), is_int(), etc para más específicamente dirigidos a prueba

0
<?php 

$nothing = NULL; 
$something = ''; 
$array = array(1,2,3); 

// Create a function that checks if a variable is set or empty, and display "$variable_name is SET|EMPTY" 
function check($var) { 
    if (isset($var)) { 
     echo 'Variable is SET'. PHP_EOL; 
    } elseif (empty($var)) { 
     echo 'Variable is empty' . PHP_EOL; 

    } 

} 

check($nothing); 
check($something); 
check($array); 
+0

proporciona detalles a tu respuesta. – Parixit

1

aquí he explicado cómo el función vacía y isset funciona, use el que sea apropiado también puede usar la función is_null también

<?php 
    $val = 0; 
    //evaluates to true because $var is empty 
    if (empty($val)) { 
     echo '$val is either 0, empty, or not set at all'; 
    } 
    //evaluates to true because $VAR IS SET 
    if (isset($val)) { 
     echo '$val is set even though it is empty'; 
    } 
    ?> 
0

Vale la pena señalar, y después de casi 9 años de codificación PHP, descubrí que la mejor forma de verificar cualquier variable es usar la función empty(). Esto se debe a que no genera errores y, aunque los desactives, PHP aún los genera. empty() sin embargo no devolverá errores si la variable no existe. Así que creo que la respuesta correcta no es comprobar si es nula, pero hay que hacer lo siguiente

if (!empty($var) && is_null($var)) 

Nota del manual de PHP

variables se considera vacía si no existe o si su valor es igual a FALSO

En contraposición a ser nulo, que es útil aquí!

0

Me sentí obligado a responder esto debido a las otras respuestas. Use empty() si puede porque cubre más bases. Futuro, me lo agradecerás.

Por ejemplo, tendrá que hacer cosas como isset() & & strlen() donde podría usar empty(). ¡Piensa que es así de vacío! Isset ($ var) || $ var == false

0

Para verificar los valores nulos, puede usar is_null() como se muestra a continuación.

if (is_null($value)) { 
    $value = "MY TEXT"; //define to suit 
} 
Cuestiones relacionadas