2016-02-27 6 views
5

wiem, że mogę sprawdzić czy superglobalną $ _POST jest pusta lub nie stosując

empty/isset 

Jednak mam tu wiele pól. Czy istnieje skrót do sprawdzania, czy wszystkie pola są wypełnione? Zamiast wykonywać

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

Z góry dziękuję!

Odpowiedz

7

Można użyć array_filter i porównanie obu przypadkach

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

Dzięki za szybką odpowiedź! To działa jak urok! Wybiorę to jako najlepszą odpowiedź, kiedy mam na to pozwolenie. Dzięki za kupę! – erwinleonardy

+0

@erwinleonardy Twoje bardzo mile widziane. cieszę się, że pomogłem :) – roullie

4

Można pętli zmiennej $ _POST.

Na przykład:

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

Dzięki za odpowiedź! Myślę, że najszybszym i najbardziej efektywnym sposobem na to jest użycie tego, co zalecała roullie. Ponieważ w leau sprawdzania jeden po drugim. Oblicza liczbę elementów w tablicy. – erwinleonardy

+0

@erwinleonardy Ulepszyłem odpowiedź rouillie i też ją lubię, ale nie mówię, że jest to najbardziej skuteczny sposób. To tylko sztuczka prędkości, która sprawi przyjemność naszym oczom, które zadziwiły 2 linie kodu i wszystko jest gotowe! A co jeśli pewnego dnia zdecydujesz się powiedzieć użytkownikowi, które pola *** są puste? Jeśli masz 20 pól w formularzu i mówisz użytkownikowi, że coś jest puste; to nie pomaga. –

+0

Ta odpowiedź jest znacznie lepsza, gdy dojdziesz do tego etapu. –

2

Oto funkcja Właśnie autorami, które mogą pomóc.

jeśli którykolwiek z przekazywanych argumentów jest pusty, zwraca wartość false. jeśli nie, to zwróci true.

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

Przykład

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

Można użyć foreach() pętlę, aby sprawdzić każdą wartość $_POST:

foreach ($_POST as $val) { 
    if(empty($val)) echo 'You have not filled up all the inputs'; 
} 
Powiązane problemy