json — Путаница вокруг объектов в квадратных скобках [{«a»: «b») и объектов без скобок {«a»: «b» в переполнении стека

У меня был результат AJAX, который получил json_encode($result); в PHP перед возвращением.

Первоначально возвращенные данные выглядели так:

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

Обратите внимание, что у него есть [] скобки!
Затем я бы проанализировал данные и работал с ними.

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

Решение

Делать

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

в вашем коде PHP, и он начнет работать как раньше. Причина отсутствия скобок в том, что

$sql_search["sql_search_count"] = $sql_search_count;

попросит PHP включить ключ с именем sql_search_count в $sql_search переменная. Поскольку это массив, он напрямую не может. Он преобразует его в формат, который вы видите сейчас.

0

Другие решения

Других решений пока нет …