将数组索引转换为字符串


Convert array index into a string?

我有一个这样的数组:

$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符号?

您需要

删除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

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

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

问题是,您可能会遇到多个错误,但您提供的格式仅支持一个错误。 $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', ...]}