2011-03-08 15 views

risposta

33

Il empty() function farà il lavoro.

usarlo con l'operatore not (!) per verificare "se non vuoto", cioè

if(!empty($var)){ 

} 
+6

'empty' attiverà un avvertimento PHP se la variabile non è impostata. 'isset' non attiva un avviso. –

+2

@Kevin Peno No, non lo farà. Dalla documentazione: 'empty() è l'opposto di (boolean) var, tranne che non viene generato alcun avviso quando la variabile non è impostata. – phihag

+0

@Kevin peno non sono d'accordo sull'avviso generato. Controllalo> http://fr.php.net/manual/en/function.empty.php#82942 – Artusamak

0

Non so se esiste già uno esatto, ma è possibile scrivere facilmente una funzione personalizzata per gestirlo.

function isset_and_true($var) { 
    return (isset($var) && $var == true) ? true : false; 
} 

if (isset_and_true($a)) { 
    print "It's set!"; 
} 
+0

È rendersi conto che il bit "== true" in "&& $ var == true" è completamente non necessario? (A meno che, naturalmente, non si intendesse verificare l'equivalenza di tipo con "&& $ var === true".) –

+0

'((booleano) $ x)? true: false' è una tautologia – phihag

+1

questo genererebbe un avvertimento quando si passa $ a se non è impostato – dynamic

7

ecco qua. questo dovrebbe farlo

if (isset($var) && $var) 
0
isset($a{0}) 

isset E len non è 0 sembra più affidabile per me, se si esegue il seguente:

<?php 
$a=$_REQUEST['a']; 

if (isset($a{0})) { // Returns "It's 0!!" when test.php?a=0 
//if (!empty($a)) { // Returns "It's empty!!" when test.php?a=0 
    echo 'It\'s '.$a; 
} else { echo 'It\'s empty'; } 

?> 
-1

Controlla se la variabile è impostata e vera. Ignora messaggio di avviso

if(@!empty($foo)) 
+2

questo non è necessario. Empty non attiverà alcun errore – dynamic

2

Sembra che @phihag e @ steveo225 siano corretti.

Determina se una variabile è considerata vuota. Una variabile è considerata vuota se non esiste o se il suo valore è uguale a FALSE. empty() non genera un avviso se la variabile non esiste.

Nessun avviso viene generato se la variabile non esiste. Ciò significa che empty() è essenzialmente l'equivalente conciso a !isset($var) || $var == false.

Quindi, sembra che !empty($var) equivalga a isset() && $var == true.

http://us2.php.net/empty

0

È possibile utilizzare il ?? operatore in quanto tale:

if($var ?? false){ 
    ... 
} 

Quello che fa è controlla se $var è impostato e mantenere il suo valore.In caso contrario, l'espressione restituisce come secondo parametro, in questo caso false, ma potrebbe essere l'utilizzo in altri modi, come:

// $a is not set 
$b = 16; 

echo $a ?? 2; // outputs 2 
echo $a ?? $b ?? 7; // outputs 16 

Maggiori informazioni qui: https://lornajane.net/posts/2015/new-in-php-7-null-coalesce-operator

0
$a = new stdClass; 

$a->var_false = false; 
$a->var_true = true; 

if ($a->notSetVar ?? false) { 
    echo 'not_set'; 
} 

if ($a->var_true ?? false) { 
    echo 'var_true'; 
} 

if ($a->var_false ?? false) { 
    echo 'var_false'; 
} 
+0

Sebbene questo snippet di codice possa essere la soluzione, [compresa una spiegazione] (// meta.stackexchange.com/questions/114762/explaining-entely- code-based-answers) aiuta davvero a migliorare la qualità del tuo post. Ricorda che stai rispondendo alla domanda per i lettori in futuro, e queste persone potrebbero non conoscere le ragioni del tuo suggerimento sul codice. – yivi