Проверка PHP, если пустые поля

У меня есть форма регистрации с примерно 10 полями, и все они должны быть заполнены перед обработкой, поэтому, пытаясь избежать всех, если чеки я придумал, это хороший метод?

foreach($list as $items) { if(empty($items)) { $error[] = "All fields are required."; break; } } 

или я должен сделать if (empty ($ field_1) || empty ($ field_2) и т. д. затем вывести ошибку?

Предполагая, что ваши данные поступают из $_GET или $_POST , все поля данных будут строками. Это означает, что вы должны выполнить чек в одном вызове функции :

 if (in_array('', $list, TRUE)) { $error[] = "All fields are required."; } 

Это ищет строки, которые в точности равны пустой строке. Если вы хотите сделать сравнения свободными (более или менее идентичными проверке, которую выполняет empty() ), просто удалите окончательный TRUE .

EDIT Думая об этом, вам не нужно строгое сравнение. Я сделал это, чтобы разрешить законное значение поля '0' (которое empty() не разрешало), но это также будет разрешено со свободными сравнениями, так как '0' != '' .

ДРУГОЕ ИЗОБРАЖЕНИЕ Если вы хотите проверить, что длина жало больше двух, вам придется зацикливаться:

 foreach ($list as $item) { if (strlen($item) < 2) { $error[] = "All fields are required."; break; } } 

Это также «очистит 0 », если предположить, что под этим вы подразумеваете «не разрешать значение 0 ». Если вы также хотите запретить '00' (или любую другую строку, которая приводит к 0 ), вы можете изменить предложение if на это:

 if (strlen($item) < 2 || (!(int) $item)) { 

все нормально. Если вы просто хотите показать сообщение «Все поля обязательны». без отображения поля в пробеле.

В противном случае это будет более удобным для пользователя, если вы проверите и покажете, какое поле осталось пустым.

Это хорошая идея, чтобы поместить его в цикл, как вы это делали, но обратите внимание, что это не удастся даже тогда, когда пользователь вводит 0 и будет передавать строку, содержащую только пробелы, поэтому вы можете сделать более эффективные проверки, чем empty()

Я бы подошел к этому с помощью проверки in_array.

 <?php $fields=array('name','age','yadayada','something_else'); foreach ($_POST as $key=>$value){ if(in_array($key,$fields) && $value!=''){ $$key=$value; }else{ $error[$key]='This field is required.'; } } ?>