括号内的物体[{" a":" b"}]和非括号内的物体混淆{" a":" b"} PHP

时间:2016-03-17 07:18:58

标签: php json parsing object brackets

我有一个AJAX结果,在返回之前在PHP中获得了json_encode($result);

最初返回的数据如下所示:

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

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

data = $.parseJSON(data);

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

$sql_search["sql_search_count"] = $sql_search_count;

现在突然我的数据会像这样返回:

{"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; 则可以。
但它不是在顶层,它成为第一个结果的孩子,如下:
[{"ID":"4066","post_title":"TATTOO SLEEVES","sql_search_count","1"}]

1 个答案:

答案 0 :(得分: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的密钥。由于它是一个数组,它直接不能。它会将其转换为您现在看到的格式。