2012-06-22 59 views
8

Al mantener el código, me encuentro con bucles, donde al final del bucle se establecen varias variables en NULL como lo siguiente: $var = NULL;. Por lo que entiendo en el manual, NULL se refiere principalmente como algo para comparar en código PHP. Como NULL no tiene ningún tipo y no es una cadena o un número, su salida no tiene sentido.Asignando NULL a una variable en PHP: ¿qué hace eso?

Desafortunadamente no puedo dar un ejemplo, pero creo que los valores NULL se escriben en un archivo de nuestro código. Mi pregunta es: ¿el valor $var tiene un valor después de la asignación, y hará eco/escritura produciendo salida?

EDIT:He leído la entrada manual de PHP enNULL. No hay necesidad de publicar esto: http://php.net/manual/en/language.types.null.php en un comentario o respuesta, o top downvote me por no tener RTM. ¡Gracias!

+1

Mencioné en mi publicación, antes de editarla, que el manual no responde mi pregunta. De alguna manera quise dar a entender que lo había leído. ¿Asumo que eres uno de los downvoters? Muchas gracias hombre. – toon81

+0

Es posible que desee agregar algún código real (relevante) que muestre cómo se usa 'NULL'. De lo contrario, solo obtendrás respuestas RTM, ya que tus preguntas parecen indicar que no entiendes el uso de 'NULL' (en PHP) – Veger

+2

He votado negativamente tu pregunta, porque es vaga, contiene detalles innecesarios acerca de su trabajo y carece de detalles relevantes sobre el caso de uso. Esto da como resultado la variedad de (supuestamente) respuestas que no ayudan. Mi voto negativo no es porque haya leído o no el manual (aunque tampoco fue muy claro antes de su edición) – Veger

Respuesta

1

null es casi como cualquier otro valor en PHP (en realidad, también es un tipo de datos diferente de cadena, int, etc.).

Sin embargo, hay una diferencia importante: isset($var) comprueba que exista la var y que tenga un valor no nulo.

Si va a leer la variable siempre otra vez antes de asignar un nuevo valor, unset() es la manera incorrecta de hacerlo, pero la asignación de null está perfectamente bien:

php > $a = null; 
php > if($a) echo 'x'; 
php > unset($a); 
php > if($a) echo 'x'; 
Notice: Undefined variable: a in php shell code on line 1 
php > 

Como se puede ver, unset() realidad elimina la variable , al igual que nunca existió, al asignar null lo establece en un valor específico (y crea la variable si es necesario).

Un caso de uso útil de null está en los argumentos por defecto cuando se desea saber si se ha proporcionado o no y cadenas vacías, cero, etc., son válidas, también:

function foo($bar = null) { 
    if($bar === null) { ... } 
} 
0

nulo en los medios de PHP una variable no se le asignó ningún valor.

http://php.net/manual/en/language.types.null.php

+0

Me temo que esa no era mi pregunta. Me aseguré de RTFM antes de publicar ... :) – toon81

+0

Por lo general, es una buena idea vincular a la versión en inglés de un manual en lugar de su versión de $ other_language. – ThiefMaster

+0

@ toon81 Bueno, el manual parece responder a su (s) pregunta (s), ya que indica los usos de nulo e incluso muestra que '$ var = NULL' es perfectamente legal – Veger

0

Parece que el propósito de la aplicación nula con sede fuera de la información proporcionará es despejar la variable.

Puede desarmar una variable en PHP configurándola en NULL o usando la función unset().

unset() destruye las variables especificadas.

El comportamiento de unset() dentro de una función puede variar según qué tipo de variable está intentando destruir.

Si una variable globalizada está desarmada() dentro de una función, solo se destruye la variable local . La variable en el entorno de llamada conservará el mismo valor que antes de llamar a unset().

3
[[email protected] ~]$ php -r '$i="foo"; print "ONE\n"; var_dump($i); unset($i); print "TWO\n"; var_dump($i); $i=NULL; print "THREE\n"; var_dump($i); print "\n"; if (isset($i)) print "Set.\n"; if (is_null($i)) print "is_null\n";' 
ONE 
string(3) "foo" 
TWO 
NULL 
THREE 
NULL 
is_null 
[[email protected] ~]$ 

El resultado de isset() será booleano falso, pero la variable todavía está definido. La función isset() se llamaría mejor isnotnull(). :-P

Tenga en cuenta que is_null() también devolverá verdadero para un valor que nunca se ha establecido.

Yay PHP.

1

Una variable podría establecerse en NULL para indicar que no contiene ningún valor. Tiene sentido si en algún punto posterior del código se verifica que la variable sea NULL.

Una variable se puede establecer explícitamente en NULL para liberar la memoria utilizada por él. Esto tiene sentido si la variable consume mucha memoria (consulte this question).

Seque el código y podrá averiguar la razón exacta.

-1

Null es un tipo de datos especial que puede tener solo un valor, que es el mismo. Lo que significa que null no es solo un tipo de datos sino también una palabra clave literal. Una variable de tipo de datos null es una variable que no tiene ningún valor asignado cuando se crea una variable sin un valor. Se le asigna automáticamente un valor de nulo, esto es de modo que cualquier basura que haya en esa ubicación de memoria antes se borre, de lo contrario el programa puede intentar procesarlo

Cuestiones relacionadas