objects [{"a":"b"}] 和 non-bracketed objects {"a":"b"} 在 PHP

Confusion around bracketed objects [{"a":"b"}] and non-bracketed objects {"a":"b"} in PHP

在 returned 之前,我在 PHP 中获得了 AJAX 结果 json_encode($result);

最初数据 returned 看起来像这样:

[{"ID":"4066","post_title":"TATTOO SLEEVES"}]

注意它有 [ ] 括号!!
然后我会解析 JSON 数据并使用它。

data = $.parseJSON(data);

但是,我需要 return 一个额外的值,所以在 returning 之前的 AJAX 钩子中我添加了:

$sql_search["sql_search_count"] = $sql_search_count;

现在我的数据突然 return 变成这样:

{"0":{"ID":"4066","post_title":"TATTOO SLEEVES"},"sql_search_count":"1"}

没有更多 [ ] 括号!
我正在尝试拆分这些数据;获取“0”字符串部分,然后像以前一样将其推入 $.parseJSON(data);。但我似乎无法找到方法。

为什么有时有 [ ] 括号有时没有?

如何在周围带有 [ ] 的新变量中获取“0”字符串?

我尝试了以下方法:

$sql_search[0]["sql_search_count"] = $sql_search_count;
但这给了我一个错误...

如果我把它改成 $sql_search[0]->sql_search_count = $sql_search_count; 就可以了。
但它不是不在顶层,它变成了第一个结果的 child 像这样:
[{"ID":"4066","post_title":"TATTOO SLEEVES","sql_search_count","1"}]

$sql_search[0]["sql_search_count"] = $sql_search_count;

在您的 PHP 代码中,它将像以前一样开始工作。缺少括号的原因是

$sql_search["sql_search_count"] = $sql_search_count;

将要求 PHP 将名为 sql_search_count 的键包含到 $sql_search 变量中。既然是数组,直接不行。它会将其转换为您现在看到的格式。