2016-02-27 17 views
5

So che posso controllare se il superglobale $ _POST è vuota o non utilizzando

empty/isset 

Tuttavia, ho molti campi qui. C'è qualche scorciatoia per controllare se tutti i campi sono riempiti? Invece di fare

if (!empty($_POST['a']) || !empty($_POST['b']) || !empty($_POST['c']) || !empty($_POST['d']).... ad nauseum) 

Grazie in anticipo!

risposta

7

È possibile utilizzare array_filter e confrontare entrambi i fronti

if(count(array_filter($_POST))!=count($_POST)){ 
    echo "Something is empty"; 
} 
+1

Grazie per la pronta risposta! Esso funziona magicamente! Selezionerò questa come la migliore risposta quando potrò farlo. Grazie mille! – erwinleonardy

+0

@erwinleonardy Sei il benvenuto. felice di aver aiutato. :) – roullie

4

È possibile scorrere la variabile $ _POST.

Ad esempio:

$messages=array(); 
foreach($_POST as $key => $value){ 
    if(empty($value)) 
     $messages[] = "Hey you forgot to fill this field: $key"; 
} 
print_r($messages); 
+0

Grazie per la risposta! Penso che il modo più rapido ed efficiente per farlo sia quello di usare i roullie consigliati. Poiché, in lea di controllare uno per uno. Calcola il numero di elementi in una matrice. – erwinleonardy

+0

@erwinleonardy Ho upvoted la risposta di rouillie e mi piace anche a me ma non dico che è il modo più efficiente per farlo. È solo un trucco veloce per accontentare i nostri occhi che wow 2 linee di codice e tutto è fatto! E se un giorno decidessi di dire all'utente *** quali campi sono vuoti? Se hai 20 campi su un modulo e dici all'utente hey qualcosa è vuoto; questo non aiuta –

+0

E questa risposta è di gran lunga migliore quando arrivi a quel punto. –

2

Ecco una funzione Ho appena bibliografici che potrebbe aiutare.

se uno degli argomenti che si supera è vuoto, restituisce falso. se no tornerà vero.

function multi_empty() { 
    foreach(func_get_args() as $value) { 
     if (!isset($value) || empty($value)) return false; 
    } 
    return true; 
} 

Esempio

multi_empty("hello","world",1234); //Returns true 
multi_empty("hello","world",'',1234); //Returns false 
multi_empty("hello","world",1234,$notset,"test","any amount of arguments"); //Returns false 
2

È possibile utilizzare un ciclo foreach() per controllare ogni valore $_POST:

foreach ($_POST as $val) { 
    if(empty($val)) echo 'You have not filled up all the inputs'; 
} 
Problemi correlati