将数组索引转换为字符串?

时间:2016-03-11 14:46:35

标签: php

我有一个这样的数组:

$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

3 个答案:

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

答案 1 :(得分:5)

不要调用serialize(将其转换为特定于PHP的字符串格式)。

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

答案 2 :(得分: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', ...]}