vacio - php is null or empty
¿Cuál es la diferencia entre is_null($ var) y($ var=== null)? (7)
Acabo de ejecutar un punto de referencia rápido, probando un millón de iteraciones de cada uno. is_null
tardó 8 segundos en completarse; === null
tomó 1.
Entonces, una llamada a is_null
es 0.000007s más lenta que una llamada a ===
en mi computadora.
Encontraría algo más útil para optimizar.
Mi código:
<?php
$start = time();
$var = null;
for ($i = 1000000; $i--; ) {
is_null($var);
}
echo time() - $start;
$start = time();
for ($i = 1000000; $i--; ) {
$var === null;
}
echo time() - $start;
¿Hay alguna diferencia entre esto ...
if (is_null($var)) {
do_something();
}
¿y esto?
if ($var === null) {
do_something();
}
¿Qué forma es mejor al verificar si una variable contiene nulo? ¿Hay algún caso límite que deba conocer? (Inicializo todas mis variables, por lo que las variables inexistentes no son un problema).
Ambas son exactamente iguales, utilizo is_null
porque hace que mi código sea más legible
Si parece redundante para php tener tantas funciones de tipo is_foo (), cuando solo puede utilizar un operador de comparación estándar, considere funciones llamadas programáticamente.
$arrayOfNullValues = array_filter($myArray, ''is_null'');
Siempre que la variable esté inicializada (lo que usted indicó, aunque no estoy 100% seguro de si esto importa en este contexto o no). Ambas soluciones pueden arrojar una advertencia si la variable no se definió), son funcionalmente iguales. Supongo que ===
sería un poco más rápido, ya que elimina la sobrecarga de una llamada a función.
Realmente depende de cómo mires tu condición.
===
es para una comparación de datos estricta. NULL tiene solo un ''valor'', por lo que esto funciona para comparar contra NULL (que es una constante de PHP del ''valor'' nulo)
is_null
está comprobando que la variable sea del tipo de datos NULL.
Depende de ti lo que elijas, realmente.
Usaría la función PHP incorporada sobre la comparación del operador cada vez.
is_null($var)
es aproximadamente 14 veces más lento que $var===null
... 37.8 ms vs. 2.6 ms.
Pero en realidad no sé por qué.
✅
es true
❌
es false
| isset | is_null | ===null | ==null | empty |
|-------|---------|---------|---------|---------|---------|
| null | ❌ | ✅ | ✅ | ✅ | ✅ |
| true | ✅ | ❌ | ❌ | ❌ | ❌ |
| false | ✅ | ❌ | ❌ | ✅ | ✅ |
| 0 | ✅ | ❌ | ❌ | ✅ | ✅ |
| 1 | ✅ | ❌ | ❌ | ❌ | ❌ |
| /0 | ✅ | ❌ | ❌ | ❌ | ❌ |
| unset | ❌ | ✅ | ✅ | ✅ | ✅ |
| "" | ✅ | ❌ | ❌ | ✅ | ✅ |
Resumen: 🔸 ♦ ️🔸
-
empty
equivale a==null
-
is_null
es equivalente a===null
-
isset
es inverso deis_null
y===null