循环执行验证检查,如果其中一个检查返回false,则返回false


Looping through validation checks, and return false if one of the checks returns false?

我试图找到一种方法,用返回true或false的验证方法循环对象,然后最终知道是否有对象返回false。

    $validate_form = true;
    //Loop through groups
    foreach ($this->field_groups as $field_group) {

        //Loop through fields
        foreach ($field_group->fields as $field) {

            $validated = $field->validate($data[$field->name]);
            //if any of these returned false, set $validate_form to false
        }
    }
    return $validate_form;

但我根本无法思考如何实现这一目标。我曾想过使用一个数组,然后检查数组中是否有"false"值。但这似乎有点笨拙。

我觉得必须有一个"最佳实践"来做这件事?

UPDATE:重要的是每个字段都运行->validate()方法。甚至是第一个"false"之后的字段。

谢谢!

您可以使用以下选项:

$validate_form = true;
//Loop through groups
foreach ($this->field_groups as $field_group) {

    //Loop through fields
    foreach ($field_group->fields as $field) {

        $validated = $field->validate($data[$field->name]);
        //if any of these returned false, set $validate_form to false
        if (!$validated)
        {
            $validate_form = false;
            break;
        }
    }
}
return $val_form;

"break;"将停止循环。