我正在使用 foreach 循环将由无效用户输入导致的错误消息保存在数组中,将其更改为字符串并将它们输出到另一个页面上。但是,虽然我能够成功输出字符串,但字符串正在重复多次次。
我的代码摘录:
foreach($_POST as $field=>$value)
{
if(!empty($value))
{
if($_POST['Email']==$_POST['Verify_Email'])
{
$email=$_POST['Email'];
$email=mysqli_real_escape_string($cxn,$email);//Saves the input data & preps it for insertion into database.
}
else
{
$error[]="Mismatched Email Addresses";
}
if(preg_match('/^[a-z\d_]{2,20}$/i',$_POST['Username']))
{
$user=$_POST['Username'];
$user=mysqli_real_escape_string($cxn,$user);
}
else
{
$error[]="Invalid Username entered.Please enter an alphanumerical username between 2 to 20 characters";
}
if($_POST['Password']==$_POST['Verify_Password'])
{
$pass=$_POST['Password'];
$pass=mysqli_real_escape_string($cxn,$pass);
}
else
{
$error[]="Your passwords do not match";
}
if(preg_match('/^[a-z\d_]{2,20}$/i',$_POST['BizName']))
{
$biz=$_POST['BizName'];
$biz=mysqli_real_escape_string($cxn,$biz);
}
else
{
$error[]="Invalid BizName entered.Please enter an alphanumerical username between 2 to 20 characters";
}
}
if(!empty($_POST['Desc']))
{
$desc=$_POST['Desc'];
$desc=mysqli_real_escape_string($cxn,$desc);
}
else
{
$desc="NULL";
$desc=mysqli_real_escape_string($cxn,$desc);
}
}
foreach($_POST as $field => $value)
{
$$field = strip_tags(trim($value));
}
if(!empty($error))
{
$errormsg="";
foreach($error as $value)
{
$errormsg.= "$value";
}
include("RegForm.php");
exit();
}
include("RegForm.php");
我怀疑 $errormsg 重复多次的原因是由于 $error[ ] 中的值
(E.g $error[]="Invalid BizName entered.Please enter an alphanumerical username between 2 to 20 characters";)
这是因为 $error 重复的次数与用户输入字段的数量以及我拥有的 $error [ ] 的数量一致。
问题 如果我在 $error 是 $errormsg 重复多次的原因是正确的,有人可以指出为什么会发生这种情况,因为 foreach 循环应该只运行与 $error 数组中的值一样多的次数(多少有错误)。如果我的假设是错误的,有人能指出我正确的方向吗?
谢谢