Json编码参数问题

时间:2013-06-03 16:47:43

标签: php

我收到一条错误消息,说明以下错误。

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

当我调用json_encode函数时,我将所有三个参数都设置为符合值。

我试图找出原因,因为当我对我的代码进行测试时,我会使用此函数获得所有可接受的值。有什么想法吗?我认为这与switch语句有关但我还需要进一步验证以及我做错了什么的信息。有人可以开导我吗?

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

6 个答案:

答案 0 :(得分:5)

你可能会寻找这样的东西:

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

或者像其他人建议的那样:

json_encode(array("status"=>$status, "title"=>$title, "message"=>$message))

答案 1 :(得分:3)

您只能编码单个数据结构。如果要编码三位数据,则​​必须先将它们组合成一个数据结构。例如:

echo json_encode(Array("status" => $status, "title" => $title, "message" => $message));

答案 2 :(得分: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()生成的数组,因此您的开关块将不执行任何操作。

答案 3 :(得分: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"
}

之证件:

答案 4 :(得分:2)

阅读,http://php.net/manual/en/function.json-encode.php http://php.net/manual/en/control-structures.switch.php你在做什么切换?没有!这是什么意思? 案例'错误': array('status'=&gt;'错误');

我想你想要跟随,

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

}

答案 5 :(得分: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