2012-01-08 16 views
26
if ($user_id == NULL || $user_name == NULL || $user_logged == NULL) { 
    $user_id = '-1'; 
    $user_name = NULL; 
    $user_logged = NULL; 
} 
if ($user_admin == NULL) { 
    $user_admin = NULL; 
} 
  1. Esiste un modo più breve per farlo?
  2. E se ho ragione, dovrebbe essere testato con is_null?
  3. E 'possibile $user_id, $user_name e $user_logged scrivere in una riga (forse array?) Senza ripetere NULL?
+0

* (suggerito) * http://stackoverflow.com/questions/381265/better-way-to-check-variable-for-null-or-empty-string – Gerep

+0

Penso che si possa creare una funzione per questo ... – Gerep

risposta

59

Se si desidera verificare se una variabile è davveroNULL, utilizzare l'operatore identità:

$user_id === NULL // FALSE == NULL is true, FALSE === NULL is false 
is_null($user_id) 

Se si desidera controllare se una variabile non è impostata:

!isset($user_id) 

Oppure se la variabile non è vuota, una stringa vuota, zero, ..:

empty($user_id) 

Se si desidera verificare se una variabile non è una stringa vuota, ! sarà anche sufficiente:

!$user_id 
+1

Nota anche che 'isset()' accetta un numero illimitato di argomenti. – DaveRandom

+0

Notate anche che poiché sta usando '==' sopra e non '===', tutto ciò che viene effettivamente fatto è 'if (! $ Var ||! $ Var ...' – DaveRandom

+2

Sì, documentazione a: [ 'isset'] (http://php.net/manual/en/function.isset.php), [' is_null'] (http://php.net/manual/en/function.is-null.php) , ['empty'] (http://php.net/manual/en/function.empty.php). A giudicare dal codice, presumo che le variabili debbano essere una stringa, quindi consiglio: **' if (! is_string ($ user_id) || $ user_id === '') '**. –

1

empty() è un po 'più corto, in alternativa al controllo !$user_id come suggerito altrove:

if (empty($user_id) || empty($user_name) || empty($user_logged)) { 
} 
6

È possibile verificare se non è impostato (o vuoto) in vari modi.

if (!$var){ } 

Oppure:

if ($var === null){ } // This checks if the variable, by type, IS null. 

Oppure:

if (empty($var)){ } 

È possibile controllare se è dichiarato con:

if (!isset($var)){ } 

Si precisa che per PHP interpreta 0 (intero) e "" (stringa vuota) e false come "vuoto" - e di Nonostante siano diversi tipi, questi specifici valori sono considerati da PHP come gli stessi. Non importa se $ var non viene mai impostato/dichiarato o se è dichiarato come $ var = 0 o $ var = "". Così spesso si confronta usando l'operatore === che si confronta con il tipo di dati. Se $ var è 0 (numero intero), $ var == "" o $ var == false verrà convalidato, ma $ var === "" o $ var === false no.

+1

'! isset ($ var) 'controlla se la variabile non è definita e non se è vuota o meno. – noob

+1

Vero - e corretto :) –

0

1.

if(!($user_id || $user_name || $user_logged)){ 
    //do your stuff 
} 

2. No. In realtà non ho capito perché scrivi un tale costrutto.

3. Metti tutti i valori nella matrice, ad esempio $ ar ["user_id"], ecc.

0

Si prega di definire cosa si intende per "vuoto".

Il test che uso normalmente è isset().

+0

@micha quindi la mia prima riga - "vuoto" è un po 'ambigua. – Alnitak

+0

isset fa schifo nella maggior parte dei casi. –

0

è possibile utilizzare la routine isset().

anche additionaly è possibile fare riferimento una gamma di is_type() funzioni come

is_string(), is_float(), is_int() ecc per ulteriori specificatamente testare

0
<?php 

$nothing = NULL; 
$something = ''; 
$array = array(1,2,3); 

// Create a function that checks if a variable is set or empty, and display "$variable_name is SET|EMPTY" 
function check($var) { 
    if (isset($var)) { 
     echo 'Variable is SET'. PHP_EOL; 
    } elseif (empty($var)) { 
     echo 'Variable is empty' . PHP_EOL; 

    } 

} 

check($nothing); 
check($something); 
check($array); 
+0

fornire dettagli per la tua risposta. – Parixit

1

Qui ho spiegato come la funzione vuota e isset funziona si prega di utilizzare quello che è appropriato anche è possibile utilizzare is_null funzione anche

<?php 
    $val = 0; 
    //evaluates to true because $var is empty 
    if (empty($val)) { 
     echo '$val is either 0, empty, or not set at all'; 
    } 
    //evaluates to true because $VAR IS SET 
    if (isset($val)) { 
     echo '$val is set even though it is empty'; 
    } 
    ?> 
0

Vale la pena notare - e l'ho scoperto solo dopo quasi 9 anni di codifica PHP che il modo migliore di controllare qualsiasi variabile esiste usando la funzione empty(). Questo perché non genera errori e anche se li spegni - PHP li genera ancora! empty() tuttavia non restituirà errori se la variabile non esiste. Quindi credo che la risposta corretta non è quello di verificare se il suo nulla, ma per effettuare le seguenti operazioni

if (!empty($var) && is_null($var)) 

Annotare il manuale di PHP

variabile è considerata vuota se non esiste o se il suo valore è uguale a FALSE

Al contrario di null che è utile qui!

0

Feltri costretti a rispondere a questo a causa delle altre risposte. Usa vuoto() se puoi perché copre più basi. Futuro mi ringrazierai.

Ad esempio, è necessario eseguire operazioni come isset() & & strlen(), dove invece è possibile utilizzare empty(). Pensa che questo è vuoto! Isset ($ var) || $ var == false

0

Per verificare i valori nulli è possibile utilizzare is_null() come illustrato di seguito.

if (is_null($value)) { 
    $value = "MY TEXT"; //define to suit 
} 
Problemi correlati