代码如下:
public function check_time($arr){
if (!isset($arr['time']) || $arr['time'] <=1){
$this->info_msg(400,'时间戳不正确.');
}
if (time() - intval($arr['time']) > 60){
$this->info_msg(401,'请求超时');
}
}
public function info_msg($code,$msg='',$data=[]){
/****组合数组****/
$return_data['code']=$code;
$return_data['msg']=$msg;
$return_data['data']=$data;
echo json_encode($return_data);die();
}
请求结果发现中文部分(时间戳不正确、请求超时)被转换成了16进制的Unicode编码:
{"code":400,"msg":"\u65f6\u95f4\u6233\u4e0d\u6b63\u786e.","data":[]}
echo json_decode($return_data);
echo json($return_data);
//更换以上两种方法问题依旧。
最终解决办法:
echo json_encode($return_data,JSON_UNESCAPED_UNICODE);die();
//json_encode()函数加上“JSON_UNESCAPED_UNICODE”参数
问题得到解决,以下是正确的返回信息。
{"code":400,"msg":"时间戳不正确.","data":[]}
记住这个参数:
JSON_UNESCAPED_UNICODE
//用法:json_encode($data,JSON_UNESCAPED_UNICODE);
这句的意思是Json不要编码Unicode。