PHP json_encode несколько массивов в один объект

Я пытаюсь вернуть несколько массивов в один объект JSON и с некоторыми трудностями с синтаксисом. Приложение Android получает обновления из нескольких таблиц, которые я хочу получить в одном ответе.

В настоящее время я так кодирую различные результирующие наборы:

$json=json_encode(array($table1, $table2, $table3, $table4, $table5, $table6)); 

Данные возвращаются в таком формате:

 [{"table1":[{...}]},{"table2":[{...}]},...] 

В коде Android я хотел бы проанализировать его как JSONObject, из которого я могу получить каждый массив по имени вместо того, чтобы разбирать его как JSONArray и получать каждый дополнительный массив по позиции. Ответ JSON будет выглядеть следующим образом:

  {{"table1":[{...}]},{"table2":[{...}]},...} 

Кажется, все, что мне нужно сделать, это обрезать массивы результатов в объекте, а не массивом на стороне PHP, но, хотя мне удалось вслепую сколотить достаточно PHP-код, чтобы зайти так далеко, я не могу показаться это последний шаг.

Ваш последний пример недействителен JSON, фигурные скобки всегда означают объект с ключами; вместо этого вы рассматриваете его как массив. Если вы хотите объект, то добавьте в него ключи массива в PHP:

 $json=json_encode(array('a' => $table1, 'b' => $table2, 'c' => $table3)); 

Тогда это даст

 {"a":{"table1":[{...}]},"b":{"table2":[{...}]},...} 

Кажется, что вы хотите.

@ Анонимный ответ сделал трюк. Чтобы уточнить, мне пришлось очистить то, что я делал ранее, поэтому вместо этого:

 $table1['table1'] =$stmt_table1->fetchAll(PDO::FETCH_ASSOC); $table2['table2'] =$stmt_table2->fetchAll(PDO::FETCH_ASSOC); ... $json=json_encode(array($table1, $table2, $table3, $table4, $table5, $table6)); 

У меня теперь есть следующее:

 $table1_results =$stmt_table1->fetchAll(PDO::FETCH_ASSOC); $table2_results =$stmt_table2->fetchAll(PDO::FETCH_ASSOC); ... $json=json_encode(array('table1' => $table1_results , 'table2' => $table2_results,...);