函数中的PHP foreach只运行一次

函数中的PHP foreach只运行一次,php,arrays,function,Php,Arrays,Function,我试图运行foreach循环来检查表单中的一个必填字段是否为空,并通过错误数组输出缺少的字段每个变量都分配给一个$\u POST变量。 但是,一旦调用该函数: fields_empty($requiredFields, $fieldErrors); 它只运行一次,并且不会在错误中循环。以下是完整的源代码: $requiredFields = array( "First Name"=>$fname, "Last Name"=>$lname, "Email"=&

我试图运行foreach循环来检查表单中的一个必填字段是否为空,并通过错误数组输出缺少的字段每个变量都分配给一个$\u POST变量。

但是,一旦调用该函数:

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

而且,这只有在函数中才会发生。如果我在没有函数的情况下执行它,它会显示所有缺少的字段。

从函数中删除返回return所做的是终止函数并返回通过return传递的任何内容,这里它被设置为true。删除返回将保持循环运行

function fields_empty($requiredFields, $fieldErrors) {
   global $fieldErrors;
   foreach($requiredFields as $name => $field) {
      if (empty($field)) {
         array_push($fieldErrors, "$name is required.<br>");
      }
   }
}
函数字段\u为空($requiredFields,$fieldErrors){
全球错误;
foreach($requiredFields作为$name=>$field){
if(空($field)){
数组\u push($fieldErrors,“$name是必需的。
”); } } }
为什么要将
$fieldErrors
作为参数传递,并将其作为
全局
访问?只需通过引用将其作为参数传递即可。但是,在循环的中间,<<代码>返回<代码>将>代码>终止< /代码>该循环。
function fields_empty($requiredFields, $fieldErrors) {
   global $fieldErrors;
   foreach($requiredFields as $name => $field) {
      if (empty($field)) {
         array_push($fieldErrors, "$name is required.<br>");
      }
   }
}