Два запроса mysql в одном объекте json

У меня есть две таблицы, которые я хочу преобразовать в json следующим образом:

[ { "date":"2013-07-20", "id":"123456", "year":"2013", "people":[ { "name":"First", "age":"60", "city":"1" }, { "name":"second", "age":"40", "city":"2" }, { "name":"third", "age":"36", "city":"1" } ] } ] 

но результатом моего кода является следующее:

 [ { "date":"2013-07-20", "id":"123456", "year":"2013",} ,{ "people":[ { "name":"First", "age":"60", "city":"1" }, { "name":"second", "age":"40", "city":"2" }, { "name":"third", "age":"36", "city":"1" } ] } ] 

код создает новый объект для массива «people», и я хочу, чтобы они находились в одном и том же объекте

 $result = mysql_query("SELECT * FROM data where id='123456'"); $fetch = mysql_query("SELECT name,age,city FROM people where id='123456'"); $json = array(); $json2['people'] = array(); while ($row = mysql_fetch_array($result, MYSQL_ASSOC)){ $json[] = $row; } while ($row = mysql_fetch_assoc($fetch)){ $row_temp["name"]=$row["name"]; $row_temp["age"] = $row["age"]; $row_temp["city"] = $row["city"]; array_push($json2['people'],$row_temp); } array_push($json, $json2); echo Json_encode($json); 

Как я могу заставить массив находиться в том же объекте, что и таблица «данные»?

Большое спасибо

Я думаю, вы можете попробовать это

 $result = mysql_query("SELECT * FROM data where id='123456'"); $fetch = mysql_query("SELECT name,age,city FROM people where id='123456'"); // I think, you'll get a single row, so no need to loop $json = mysql_fetch_array($result, MYSQL_ASSOC); $json2 = array(); while ($row = mysql_fetch_assoc($fetch)){ $json2[] = array( 'name' => $row["name"], 'age' => $row["age"], 'city' => $row["city"] ); } $json['people'] = $json2; echo json_encode($json); 

Результат print_r($json) должен быть примерно таким

 Array ( [date] => 2013-07-20 [year] => 2013 [id] => 123456 [people] => Array ( [0] => Array ( [name] => First [age] => 60 [city] => 1 ) [1] => Array ( [name] => second [age] => 40 [city] => 2 ) ) ) 

Результат echo json_encode($json) должен быть

 { "date" : "2013-07-20", "year":"2013", "id":"123456", "people": [ { "name" : "First", "age" : "60", "city" : "1" }, { "name" : "second", "age" : "40", "city" : "2" } ] } 

Если вы выполните echo json_encode(array($json)) вы получите весь json завернутый в массив, что-то вроде этого

 [ { "date" : "2013-07-20", "year":"2013", "id":"123456", "people": [ { "name" : "First", "age" : "60", "city" : "1" }, { "name" : "second", "age" : "40", "city" : "2" } ] } ] 

Вы были очень близки, но вы хотите, чтобы массив People был прямым значением внешнего массива, и вы завернули его в дополнительный массив.

Также обратите внимание, что библиотека MySQL, которую вы используете, устарела. Это означает, что он будет удален из PHP в будущей версии. Вы должны заменить вызовы из семейства MySQL_ * с помощью mysqli или pdo

 $result = mysql_query("SELECT * FROM data where id='123456'"); $fetch = mysql_query("SELECT name,age,city FROM people where id='123456'"); $json = array(); while ($row = mysql_fetch_array($result, MYSQL_ASSOC)){ $json[] = $row; } $json['people'] = array(); while ($row = mysql_fetch_assoc($fetch)){ $row_temp["name"]=$row["name"]; $row_temp["age"] = $row["age"]; $row_temp["city"] = $row["city"]; array_push($json['people'],$row_temp); } echo Json_encode($json); 

Вы можете заставить его работать, ожидая использования ключевых people до самого конца, когда вы присоединяетесь к двум массивам. До тех пор просто загрузите данные в $json и $json2 .

 $json = array('date' => '2013', 'id' => '123456', 'year' => '2013'); $result = mysql_query("SELECT * FROM data where id='123456'"); $fetch = mysql_query("SELECT name,age,city FROM people where id='123456'"); $json = array(); $json2 = array(); while ($row = mysql_fetch_array($result, MYSQL_ASSOC)){ $json[] = $row; } while ($row = mysql_fetch_assoc($fetch)){ $row_temp["name"]=$row["name"]; $row_temp["age"] = $row["age"]; $row_temp["city"] = $row["city"]; array_push($json2, $row_temp); } $json['people'] = $json2; echo Json_encode($json);