Я пытаюсь запустить цикл foreach, чтобы проверить, пустое ли одно из обязательных полей в форме, и вывести недостающие поля через массив ошибок. Каждая переменная присваивается переменной $ _POST.PHP foreach в функции запускается только один раз
Однако, когда я вызываю функцию:
fields_empty($requiredFields, $fieldErrors);
Он работает только один раз, а не пробегаем по ошибке. Вот полный исходный код:
$requiredFields = array(
"First Name"=>$fname,
"Last Name"=>$lname,
"Email"=>$email,
"Password"=>$pass1,
"Confirm Password"=>$pass2,
"Country"=>$country,
"Address 1"=>$addr1,
"City"=>$city,
"State"=>$state,
"Postal Code"=>$pcode,
"Phone Number"=>$phone
);
$fieldErrors = array();
function fields_empty($requiredFields, $fieldErrors) {
global $fieldErrors;
foreach($requiredFields as $name => $field) {
if (empty($field)) {
array_push($fieldErrors, "$name is required.<br>");
return true;
}
}
}
fields_empty($requiredFields, $fieldErrors);
print_r($fieldErrors);
Выход в браузере:
Array (
[0] => First Name is required.
)
Кроме того, это происходит только тогда, когда она находится в функции. Если я выполняю его без функции, он показывает все недостающие поля.
Почему вы передаете '$ fieldErrors' как аргумент ___ и___, обращаясь к нему как к« глобальному »? Просто передайте его как аргумент 'by reference'. Но 'return' в середине цикла будет« завершать »этот цикл –