调用函数来验证后数组php


Calling function to validate post array php

我正在尝试通过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; 
}
}
}

函数validate_email不能访问外部变量(除了真正全局的变量)。除了对该准则的许多其他反对意见之外。。您应该在foreach循环中通过$value

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);
}