0

所以我正在尝试创建某种错误消息,代码如下所示:

function callError($errorcode, $attempts) {
    $errormessage = array(
        "0" => "Du har angivit fel lösenord, du har ". $attempts ." försök kvar. Kontrollera att du har skrivit rätt användarnamn.",
        "1" => "Ditt konto har låsts, kontakta webmaster för att återställa det.",
        "2" => "Användare finns inte, kontrollera att du har skrivit rätt användarnamn."
    );

    return $errormessage[$errorcode];
}

但是当我运行第一条错误消息时它不起作用,它甚至不会出现。另一方面,当我运行另外两个时,它完美无瑕!我试图返回一个包含 $errormessage 和 $attempts 的数组,但这也不起作用。

我在这里做错了什么?

4

5 回答 5

1

这似乎是变量类型的问题。

确保你在这方面是一致的。例如,让我们决定我们希望这些值是int

function callError($errorcode, $attempts) {

    $errorcode = (int) $errorcode;
    $errormessage = array(
        0 => "Du har angivit fel lösenord, du har ". $attempts ." försök kvar. Kontrollera att du har skrivit rätt användarnamn.",
        1 => "Ditt konto har låsts, kontakta webmaster för att återställa det.",
        2 => "Användare finns inte, kontrollera att du har skrivit rätt användarnamn."
    );

    return $errormessage[$errorcode];
}
于 2013-03-06T23:02:29.357 回答
1

尝试使用带有后备安全机制的开关。

function callError($errorcode, $attempts) {
    $output = '';

    switch((int)$errorcode) {
        case 0:
            $output = 'Du har angivit fel lösenord, du har '. $attempts .' försök kvar. Kontrollera att du har skrivit rätt användarnamn.';
            break;
        case 1:
            $output = 'Ditt konto har låsts, kontakta webmaster för att återställa det.';
            break;
        case 2:
            $output = 'Användare finns inte, kontrollera att du har skrivit rätt användarnamn.';
            break;
        default:
            $output = 'SOMETHING WENT WRONG [CUSTOM MESSAGE]'.$errorcode.' : '.$attempts;
            break;
    }

    // Do something more here with your error handling if needed

    // Return the output message
    return $output;
}

这将强制类型转换$errorcode为整数。但这对于这种情况并不重要default,但它会排除字符串中的整数问题"1"

于 2013-03-06T23:03:00.263 回答
0

确保索引是字符串添加

$errorcode = "$errorcode";

作为函数的第一行

于 2013-03-06T22:56:28.100 回答
0

提示:将其更改为switch()语句:

function callError($errorcode, $attempts) {
    switch ($errorcode) {
        case 0:
            return "Du har angivit fel lösenord, du har ". $attempts ." försök kvar. Kontrollera att du har skrivit rätt användarnamn.";
        case 1:
            return "Ditt konto har låsts, kontakta webmaster för att återställa det.";
        case 2:
            return "Användare finns inte, kontrollera att du har skrivit rätt användarnamn.";
        default:
            return "No error associated";
    }
}
于 2013-03-06T23:03:32.773 回答
0

答案只是删除数组中串起来的数字。

见@fedorqui 评论!

于 2013-03-06T23:03:45.097 回答