PHP foreach在一个函数中只运行一次

时间:2014-12-10 08:10:41

标签: php arrays function

我尝试运行foreach循环来检查表单中的某个必填字段是否为空,并通过错误数组输出缺少的字段。 每个变量都分配给$ _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);

浏览器输出:

Array (
    [0] => First Name is required.
)

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

1 个答案:

答案 0 :(得分:8)

从您的功能中删除返回返回的作用是终止该功能并返回通过返回传递的内容,此处设置为 true 。删除返回将使循环继续运行。

function fields_empty($requiredFields, $fieldErrors) {
   global $fieldErrors;
   foreach($requiredFields as $name => $field) {
      if (empty($field)) {
         array_push($fieldErrors, "$name is required.<br>");
      }
   }
}