validar vacio que is_null este empty declarar como campo array php null isset

php - vacio - ¿Cuál es la diferencia entre nulo y vacío?



isset php (9)

Aquí hay algunas buenas respuestas, que no repetiré. Sin embargo, en el caso de la validación de formularios, cuando se envía un formulario, el valor de cada elemento de entrada del formulario se envía al servidor en la variable $_POST . Puede verificar la existencia de una entrada particular usando isset() .

isset($_POST[''username''])

Si esto devuelve verdadero, entonces esta solicitud al servidor fue el resultado de publicar un formulario que contiene un elemento de entrada llamado "nombre de usuario". Ahora que sabemos que tenemos un valor para ese elemento de formulario, podemos ver si tiene un valor válido. empty() nos dirá si el usuario realmente ingresó datos en el campo, o si lo dejaron vacío.

empty($_POST[''username''])

Si eso es verdadero, entonces el formulario enviado al servidor tenía un campo llamado "nombre de usuario" pero el usuario no ingresó nada antes de enviar el formulario.

Soy nuevo en el concepto de vacío y nulo. Si bien me he esforzado por comprender la diferencia entre ellos, estoy más confundido. Encontré un artículo en http://www.tutorialarena.com/blog/php-isset-vs-empty.php; sin embargo, aún no veo cuándo usarías isset y estarías vacío al validar formularios. Al ver que no entiendo la diferencia, no quiero usar las funciones incorrectas, así como tampoco poder usar las funciones en otras áreas. ¿Alguien puede dar ejemplos que me ayuden a entender? Soy muy nuevo en la codificación, por lo que agradecería que alguien me diera ejemplos del mundo real y, al mismo tiempo, los mantuviera lo suficientemente simples como para que los novatos los sigan.


El empty() es una buena manera rápida de ver si la variable contiene información útil ... esto es para cadenas empty() devuelve verdadero para una cadena de "" así como una cadena nula.

Entonces puedes escribir algo como esto:

if (! empty($name)) echo $name;

Más información ver aquí: PHP: vacío ()


Ha pasado un tiempo desde que usé PHP, pero si otros idiomas son vacíos, indicará un objeto / mapa / matriz existente que no tiene contenido mientras que nulo indicaría una variable que no tiene significado / definición (sin inicializar).

En la base de datos SQL, NULL significa "sin valor".


NULL es un valor especial que establece explícitamente que la variable aún no se ha establecido en ningún valor. Tenga cuidado al usar la función empty() ya que no puede simplemente determinar que una variable es exactamente NULL usándola. Por ejemplo, la función empty() devolverá true si un int se establece en 0. Si necesita asegurarse de que una variable sea exactamente NULL use if($variable == NULL) .

Para obtener más información sobre empty() consulte http://php.net/manual/en/function.empty.php.


isset() devuelve verdadero si se cumplen ambas condiciones:

  1. La variable ha sido definida y aún no ha sido desarmada.
  2. La variable tiene un valor no nulo en ella.

Una variable se define automáticamente cuando se establece en algo (incluido nulo). Esto tiene una implicación directa en las matrices.

$a=array(); $a[''randomKey'']=true; $a[''nullKey'']=null; var_dump(isset($a[''randomKey''])); // true var_dump(isset($a[''nullKey''])); // true, the key has been set, set to null! var_dump(isset($a[''unsetKey''])); // false ! unset($a[''randomKey'']); var_dump(isset($a[''randomKey''])); // false ! it''s been unset!

Desde arriba, puede verificar si se han establecido varios campos $ _POST. Por ejemplo, una página que ha sido publicada, es razonable, tiene el nombre del botón de envío en el campo $ _POST.

empty() por el contrario, prueba si la variable tiene un valor distinto de cero. Esto significa que los valores que (int) se convierten en 0, también devuelven falso. Puede usar esto para ver si un campo $ _POST específico tiene datos.


Null es un marcador de posición que generalmente significa "no hay datos disponibles sobre esto".

El uso de null para esto es solo una convención, pero bastante extendida, hasta el punto en que algunos lenguajes de programación admiten la convención directamente. La razón por la que existe esta convención tiene en mi humilde opinión histórica que ver con "punteros"; muchas veces se definirá un procedimiento para devolver un puntero a una respuesta, y devolverá lo que tradicionalmente se llama puntero nulo si no puede producir una respuesta por algún motivo.

Vacío significa (si es un conjunto) que no tiene miembros. Esa es una respuesta explícita, y es muy diferente a "no hay datos sobre esto disponible".

En el mundo PHP, aparentemente las variables no inicializadas tienen el valor Nulo, y isset en dicha variable devuelve FALSO. Para matrices y cadenas, PHP sigue la convención de que "vacío" significa "no tiene miembros", aunque las matrices y cadenas no son conjuntos técnicamente.

PHP aparentemente tiene esta divertida idea de que 0 y 0.0 también están "vacíos", por diseño de PHP. Eso es abusivo con el concepto de "vacío" en mi humilde opinión: los números individuales no son conjuntos, por lo que 0 no puede ser razonablemente "vacío". Esto solo conduce a una programación oscura porque viola el principio de la menor sorpresa. Estoy seguro de que los diseñadores de PHP serían que "cero es el número vacío" como una especie de analogía vaga; pero si la analogía es vaga, ¿para qué molestarse? Pero luego PHP está lleno de ideas tontas.



Una variable es NULL si no tiene valor y apunta a ninguna parte en la memoria.

empty() es más un significado literal de vacío , por ejemplo, la cadena "" está vacía, pero no es NULL .

Las siguientes cosas se consideran vacías:

  • "" (una cadena vacía)
  • 0 (0 como un entero)
  • 0.0 (0 como un flotador)
  • "0" (0 como cadena)
  • NULO
  • FALSO
  • array () (una matriz vacía)
  • var $ var; (una variable declarada, pero sin un valor en una clase)

Fuente

Ejemplo

$a es NULL .

$a = '''' está vacío , pero no NULL .

Actualizar

Si $a='''' está vacío pero no es NULL , ¿cuándo uso la función empty() y cuándo uso la función isset() ?

isset() devolverá FALSE la variable apunta a NULL .

Use empty() cuando comprenda lo que está vacío (consulte la lista anterior).

Además, cuando dices que no apunta a ningún lugar en la memoria, ¿qué significa eso exactamente?

Significa que $str = '''' estará en la memoria como una cadena con una longitud de 0.

Si fuera $str = NULL , no ocuparía ningún recuerdo.


Este concepto se puede entender mejor a partir de las matemáticas. ¿Alguna vez ha tratado de dividir un número (no cero) entre 0 usando una calculadora, por ejemplo, 7/0? Obtendrá un resultado que se parece a algo así: undefined , not a number , null , etc. Esto significa que la operación es imposible, por alguna razón (dejemos que esos motivos se debatan otro día).

Ahora, realice esto: 0/7. Obtendrá la salida 0. Esto significa que la operación es posible y puede ejecutarse, pero la respuesta es solo 0 porque no queda nada después de la división. Hay un resultado válido y ese resultado es cero.

En el primer ejemplo, no solo la salida no era válida, la operación no era posible de ejecutar. Esto es similar a null . El segundo ejemplo es similar a empty .