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];
}

しかし、最初のエラーメッセージを実行すると、機能せず、表示されません。一方、他の2つを実行すると、問題なく動作します。$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

ヒント:それを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 に答える
0

インデックスがStringAddであることを確認してください

$errorcode = "$errorcode";

funcの最初の行として

于 2013-03-06T22:56:28.100 に答える