PHP多维数组重复输出
下面的代码循环遍历用户提交数据的一系列需求(在本例中是来自注册表),并输出重复的错误消息。如何停止重复信息PHP多维数组重复输出,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,下面的代码循环遍历用户提交数据的一系列需求(在本例中是来自注册表),并输出重复的错误消息。如何停止重复信息 if(!empty($_POST)){ $validate = array( 'username' => array( 'required' => true, 'min' => 3, 'max' => 20, 'unique' => 'users'
if(!empty($_POST)){
$validate = array(
'username' => array(
'required' => true,
'min' => 3,
'max' => 20,
'unique' => 'users'
),
'password' => array(
'required' => true,
'min' => 6
),
'password_confirm' => array(
'required' => true,
'matches' => 'password'
)
);
foreach($validate as $item => $rules)
{
foreach($rules as $rule => $rule_value)
{
$value = $_POST[$item];
$item = htmlentities($item, ENT_QUOTES, 'UTF-8', false);
if($rule === 'required' && empty($value))
{
$errors[] = "{$item} is required <br>";
}
}
if(!empty($errors))
{
foreach($errors as $error)
{
echo $error;
}
}
else
{
echo 'Registration Successful <br>';
}
}}
if(!empty($\u POST)){
$validate=数组(
“用户名”=>数组(
“必需”=>true,
“min”=>3,
“最大值”=>20,
“唯一”=>“用户”
),
“密码”=>数组(
“必需”=>true,
“min”=>6
),
“密码\u确认”=>数组(
“必需”=>true,
'匹配'=>'密码'
)
);
foreach($validate as$item=>$rules)
{
foreach($rules as$rule=>$rule\u值)
{
$value=$_POST[$item];
$item=htmlentities($item,entu引号,'UTF-8',false);
如果($rule=='required'&&empty($value))
{
$errors[]=“{$item}是必需的
”;
}
}
如果(!empty($errors))
{
foreach($errors作为$error)
{
echo$错误;
}
}
其他的
{
echo“注册成功
”;
}
}}
输出:
用户名是必需的用户名是必需的
需要密码
用户名是必需的
需要密码
需要密码确认
你的循环有点混乱
foreach($validate as $item => $rules)
{
foreach($rules as $rule => $rule_value)
{
$value = $_POST[$item];
$item = htmlentities($item, ENT_QUOTES, 'UTF-8', false);
if($rule === 'required' && empty($value))
{
$errors[] = "{$item} is required <br>";
}
}
}
// This piece that prints out the errors (if they are present) needs
// to be moved outside the loop that creates the error array.
if(!empty($errors))
{
foreach($errors as $error)
{
echo $error;
}
}
else
{
echo 'Registration Successful <br>';
}
foreach($validate as$item=>$rules)
{
foreach($rules as$rule=>$rule\u值)
{
$value=$_POST[$item];
$item=htmlentities($item,entu引号,'UTF-8',false);
如果($rule=='required'&&empty($value))
{
$errors[]=“{$item}是必需的
”;
}
}
}
//这件打印出错误(如果存在)的作品需要
//移动到创建错误数组的循环之外。
如果(!empty($errors))
{
foreach($errors作为$error)
{
echo$错误;
}
}
其他的
{
echo“注册成功
”;
}
此外,您可能为了提问而简化了这段代码,但如果这就是它的全部内容,为什么不在找到错误时打印它,而不是将其附加到错误数组中呢?这样你只需要循环一次。您可以使用布尔值查看是否存在错误
$has_errors = false;
foreach($validate as $item => $rules)
{
foreach($rules as $rule => $rule_value)
{
$value = $_POST[$item];
$item = htmlentities($item, ENT_QUOTES, 'UTF-8', false);
if($rule === 'required' && empty($value))
{
$has_errors = true;
echo "{$item} is required <br>";
}
}
}
if (!$has_errors) echo 'Registration Successful <br>';
$has_errors=false;
foreach($validate as$item=>$rules)
{
foreach($rules as$rule=>$rule\u值)
{
$value=$_POST[$item];
$item=htmlentities($item,entu引号,'UTF-8',false);
如果($rule=='required'&&empty($value))
{
$has_errors=true;
echo“{$item}是必需的
”;
}
}
}
如果(!$has_errors)回显“注册成功
”;
谢谢你。工作完美。是的,为了便于阅读,我减少了一些内容。