2016-03-11 27 views
-1

我有一个这样的数组:将数组索引转换为字符串?

$errors[] = "Field not correct."; 

我想返回一个JSON编码为:{"errore" : "Field not correct"}这是我的代码做到这一点:

return json_encode(array("error" => serialize($errors))); 

,但我得到:

{ 
    "error": "a:1:{i:0;s:21:"Field not correct.";}" 
} 

如何避免响应中的符号a:1:{i:0;s:21

回答

5

您需要删除serialize并且只能使用json_encode

$errors[] = "Field not correct."; 
return json_encode(["error" => $errors]); 

注意,这将有误差的阵列,由于你的方式把你的错误字符串为数组第一。

如果您只有一条错误消息,请不要使用$errors阵列。

$error = "Field not correct."; 
return json_encode(["error" => $error]); 

在这里看到两个选项:https://3v4l.org/JQVNA

+0

感谢您的提示,只是一个问题,为什么你还装在支架'[''到json_encode'? – Sandokan

+1

@Sandokan这只是数组的简写符号。它和'array('short'一样,我更喜欢它 – jszobody

+0

哦!我不知道,谢谢你!祝你有美好的一天:) – Sandokan

5

只是不叫serialize(将其转换成一个特定的PHP字符串格式)。

将您的PHP数据结构直接转换为json_encode(将其转换为标准字符串格式)。

1

问题是,您可能有多个错误,但您提供的格式只支持一个错误。 $errors可能有多个条目。 {"errore" : ".."}只能保留一条消息。

所以,你有一些选择:

只能使用第一次失误$errors

return json_encode(array("error" => $errors[0])); 

一些功能(即join

return json_encode(array("error" => join(',', $errors))); 

变化的形式组合的错误你输出支持多种错误

return json_encode(array("error" => $errors)); 

这将导致像

JSON字符串
{"errore" : ['msg', ...]}