1

次のエラーを説明するエラー メッセージが表示されます。

json_encode() expects at most 2 parameters, 3 given</p>

json_encode 関数を呼び出すと、3 つのパラメーターすべてに accpted 値が設定されます。

コードでテストを行うと、この関数で受け入れられたすべての値を取得するため、これがなぜなのかを理解しようとしています。私が間違っていることに関する情報誰かが私を啓発してもらえますか?

public function output($message, $title, $status)
{
    switch ($status)
    {
        case 'Error':
            array('status' => 'Error');
            break;
        case 'Notice':
            array('status' => 'Notice');
            break;
        case 'Success':
            array('status' => 'Success');
            break;
    }
    echo json_encode($status, $title, $message);
}
4

6 に答える 6

5

次のようなものを探しているかもしれません:

echo json_encode(array($status, $title, $message));

または、他の人が示唆したように、次のように:

json_encode(array("status"=>$status, "title"=>$title, "message"=>$message))
于 2013-06-03T16:49:38.423 に答える
3

あなたがしようとしているのは、配列をエンコードすることだと思いますか?

public function output($message, $title, $status)
{
    switch ($status)
    {
        case 'Error':
            array('status' => 'Error');
            break;
        case 'Notice':
            array('status' => 'Notice');
            break;
        case 'Success':
            array('status' => 'Success');
            break;
    }
    echo json_encode(array($status, $title, $message));
}
output('messageval', 'titleval', 'statusval');

次のような JSON が出力されます。

["statusval", "titleval", "messageval"]

またはこれもあります:

public function output($message, $title, $status)
{
    switch ($status)
    {
        case 'Error':
            array('status' => 'Error');
            break;
        case 'Notice':
            array('status' => 'Notice');
            break;
        case 'Success':
            array('status' => 'Success');
            break;
    }
    echo json_encode(array('status'=>$status, 'title'=>$title, 'message'=>$message));
}
output('messageval', 'titleval', 'statusval');

次のようなものが出力されます。

{"message":"messageval", "title":"titleval", "status":"statusval"}

また、array() によって生成された配列を使用していないため、switch ブロックは何もしません。

于 2013-06-03T16:53:47.583 に答える
3

ここに私が提案し、うまくいくものがあります:

public function output($Message='', $Title='', $Status=''){
    #   We make sure our status is perfect.
    #   We make sure our status will always be what we want and not something different by mistake.
    #   We default to "Error".
    switch(strtoupper($Status)){
        default:
            $Status = 'error';
        break;

        case 'NOTICE':
            $Status = 'notice';
        break;

        case 'SUCCESS':
            $Status = 'success';
        break;
    }

    #   We output the content as JSON
    header('Content-Type: application/json');
    echo json_encode(array(
        'status'    => $Status,
        'title'     => $Title,
        'message'   => $Message
    ));

    #   Done - 0 mean the page end with no error (PHP error !)
    exit(0);
}

出力:

output('this is my message', 'this is my title', 'error');

{
    "status" : "error",
    "title" : "this is my title",
    "message" : "this is my message"
}

ドキュメンテーション:

于 2013-06-03T16:54:38.700 に答える
2
 public function output($message, $title, $status)
    {
        switch ($status)
        {
            case 'Error':
                array('status' => 'Error');
                break;
            case 'Notice':
                array('status' => 'Notice');
                break;
            case 'Success':
                array('status' => 'Success');
                break;
        }
        echo json_encode(array('status' => $status, 'title' => $title, 
    'message' =>$message));

    }

json_encode の詳細については、このjson_encodeを参照してください

于 2013-06-03T17:15:19.917 に答える