Dipende da cosa stai cercando, se stai solo cercando di vedere se è vuoto empty
, usalo perché controlla se è impostato, se vuoi sapere se qualcosa è impostato o non usa isset
.
Empty
controlla se la variabile è impostata e se lo è controlla per null, "", 0, ecc
Isset
controlla solo se è impostato, potrebbe essere qualsiasi cosa non nulla
Con empty
, le seguenti cose sono considerate vuote:
- "" (una stringa vuota)
- 0 (0 come numero intero)
- 0,0 (0 come un galleggiante)
- "0" (0 come stringa)
- NULLO
- FALSE
- array () (un array vuoto)
- var $ var; (una variabile dichiarata, ma senza valore in una classe)
Da http://php.net/manual/en/function.empty.php
Come accennato nei commenti la mancanza di avviso è importante anche con empty ()
Dice il manuale PHP
empty () è l'opposto di (boolean) var, tranne per il fatto che non viene generato alcun avviso quando la variabile non è impostata .
Per quanto riguarda isset
Dice il manuale PHP
isset () restituirà FALSE se si prova una variabile che è stata impostata su NULL
Il tuo codice andrebbe bene come:
<?php
$var = '23';
if (!empty($var)){
echo 'not empty';
}else{
echo 'is not set or empty';
}
?>
Per esempio:
$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
{...}