Вызов функции для проверки массива записей Переполнение стека

Я пытаюсь получить массив записей, проверенный php, Сценарий 2 работает, Сценарий 1 нет — при вызове функции внутри цикла, пожалуйста, помогите

Сценарий 1
// пытаемся вызвать функцию в цикле

<form action="new_signup_form_upload.php" method="POST">
Email 1 <input type = "text" name = "email[newsignup_email1]">
Email 2 <input type = "text" name = "email[newsignup_email2]">
<input type="submit" id= "submit" name= "submit">function validate_email(){
if ($value == "") {
echo $nameErr =  '<div id = "error_message_div">Name is required</div>';
return false;
}
else{
if(!filter_var($value, FILTER_VALIDATE_EMAIL)) {
echo $emailErr = '<div id = "error_message_div">Invalid email format</div>';
return false;
}
}
}

foreach($_POST[email] as $key => $value){
validate_email();
}

Сценарий 2
// Разница здесь в том, что я пишу функцию внутри цикла

<form action="new_signup_form_upload.php" method="POST">
Email 1 <input type = "text" name = "email[newsignup_email1]">
Email 2 <input type = "text" name = "email[newsignup_email2]">
<input type="submit" id= "submit" name= "submit">

foreach($_POST[email] as $key => $value){

if ($value == "") {
echo $nameErr =  '<div id = "error_message_div">Name is required</div>';
return false;
}
else{
if(!filter_var($value, FILTER_VALIDATE_EMAIL)) {
echo $emailErr = '<div id = "error_message_div">Invalid email format</div>';
return false;
}
}
}

0

Решение

функция validate_email не имеет доступа к внешним переменным (кроме действительно действительно глобальных). Помимо множества других возражений против кода .. вы должны передать $value в вашем цикле foreach

function validate_email($value){
if ($value == "") {
echo $nameErr =  '<div id = "error_message_div">Name is required</div>';
return false;
}
else{
if(!filter_var($value, FILTER_VALIDATE_EMAIL)) {
echo $emailErr = '<div id = "error_message_div">Invalid email format</div>';
return false;
}
}
}

foreach($_POST[email] as $key => $value){
validate_email($value);
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]