簡體   English   中英

如何創建帶有相關錯誤的 php 條件檢查數組?

[英]How to create array of php conditional checks with associated errors?

我正在尋找一種在提交表單后創建條件檢查的方法。 每個字段都不同(日期、姓名、職業等),我想檢查每個字段的一組條件。 這樣做的最有效方法是什么? 我能想到的唯一方法是很多 if/else 語句或 switch。 我想知道是否有任何方法可以將所有檢查放入一個數組中,例如

[field_name conditional_check acceptable_values error_response]

然后遍歷數組中的每一行並返回適用的錯誤響應? 這樣我就可以減少硬編碼的東西。

謝謝

是的,您可以運行多個 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

我相信您的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函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM