我收到一条错误消息,说明以下错误。
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);
}
答案 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