Depende de lo que esté buscando, si solo está buscando para ver si está vacío, use, emptyya que verifica si también está configurado, si desea saber si algo está configurado o no isset.
Empty comprueba si la variable está configurada y si lo está, la comprueba en busca de nulos, "", 0, etc.
Isset solo verifica si está configurado, podría ser cualquier cosa que no sea nula
Con empty, las siguientes cosas se consideran vacías:
- "" (una cadena vacía)
- 0 (0 como un número entero)
- 0.0 (0 como flotante)
- "0" (0 como una cadena)
- NULO
- FALSO
- array () (una matriz vacía)
- var $ var; (una variable declarada, pero sin un valor en una clase)
De http://php.net/manual/en/function.empty.php
Como se mencionó en los comentarios, la falta de advertencia también es importante con vacío ()
PHP Manual dice
empty () es lo opuesto a (boolean) var, excepto que no se genera ninguna advertencia cuando la variable no está configurada .
Respecto a isset
PHP Manual dice
isset () devolverá FALSE si se prueba una variable que se ha establecido en NULL
Su código estaría bien como:
<?php
$var = '23';
if (!empty($var)){
echo 'not empty';
}else{
echo 'is not set or empty';
}
?>
Por ejemplo:
$var = "";
if(empty($var)) // true because "" is considered empty
{...}
if(isset($var)) //true because var is set
{...}
if(empty($otherVar)) //true because $otherVar is null
{...}
if(isset($otherVar)) //false because $otherVar is not set
{...}