如何使用相关错误创建php条件检查数组?

时间:2016-03-14 17:07:21

标签: php arrays conditional

我正在寻找一种在提交表单后创建条件检查的方法。每个字段都不同(日期,名称,职业等),我想检查每个字段的一组条件。这样做最有效的方法是什么?我能想到的唯一方法是很多if / else语句或一个开关。我想知道是否有办法将所有检查放入数组中,例如。

[field_name conditional_check acceptable_values error_response]

然后循环遍历数组中的每一行并返回适用的错误响应?这样我就可以减少硬编码的东西。

由于

2 个答案:

答案 0 :(得分:0)

是的,您可以运行多个if条件并将错误消息存储在数组中。让我举个例子:

$errors = array();

if(/*condition 1*/) {
    $errors[] = "Message 1";
}

if (/*condition 2*/) {
    $errors[] = "Message 2";
}

if (/*condition 3*/) {
    $errors[] = "Message 2";
}

if (!empty($errors)) {
    $strMsg = "<ul>Please fix the following errors:";
    foreach($errors as $error) {
        $strMsg .= "<li>$error</li>";
    }
    $strMsg .= "</ul>";
    echo $strMsg;
}

希望这有帮助。

和平!的xD

答案 1 :(得分:0)

我相信您的POST数据会是这样的:

$_POST => array(
    "username" => "",
    "password" => "",
    "confpass" => "",
    "emailadd" => "",
    "phonenum" => "",
    "acceptcn" => ""
);

您可以使用这样的复杂条件检查器。

<?php
    $conditions = array(
        "username" => array(
            "required" => true,
            "validate" => function () {
                return (strlen($_POST["username"]) > 5);
            }
        ),
        "password" => array(
            "required" => true,
            "validate" => function () {
                return (strlen($_POST["password"]) > 5);
            }
        ),
        "confpass" => array(
            "required" => true,
            "validate" => function () {
                return ($_POST["password"] == $_POST["confpass"]);
            }
        ),
        "emailadd" => array(
            "required" => true,
            "validate" => function () {
                return is_email($_POST["emailadd"]);
            }
        ),
        "phonenum" => array(
            "required" => false,
            "validate" => function () {
                if ((!empty($_POST["phonenum"]) && $conditions["phonenum"]["required"]) || !$conditions["phonenum"]["required"])
                    return (strlen($_POST["phonenum"]) == 10 || empty($_POST["phonenum"]));
                else
                    return false;
            }
        ),
        "acceptcn" => array(
            "required" => true,
            "validate" => function () {
                return $_POST["acceptcn"];
            }
        )
    );
?>

然后遍历$_POST数组并调用validate函数。