Я думаю, что я писал здесь неэффективный код, но, похоже, не могу найти более эффективный способ его написания.
Это часто происходит с выводом json, хотя у меня также была проблема с выводом html или xml.
Я запускаю запрос в своей базе данных, который возвращает массив.Скажи людям любимую еду.mysql_fetch_assoc в php возвращает
Array([person]=>john [food]=>chocolate)
Array([person]=>john [food]=>pizza)
Array([person]=>john [food]=>coffee)
Array([person]=>susan [food]=>licorice)
Чтобы создать свой json или html, я просматривал поиск уникальных людей, а затем добавлял еду, подобную этой
$jsonOut=''
$personAdd='';
while($gotArray=mysql_fetch_assoc(foodArray)){
if($personAdd!='$gotArray['person']){
$jsonOut.="person: $gotArray['person'], foods{";
}
$jsonOut.="food:$gotArray['food'],";
rtrim(jsonOut,',');
$jsonOut.="}";
$personAdd=$array['person'];
}
Теперь этоНичего страшного, когда у вас есть только одно значение, которое постоянно повторяется в ответе mysql, но когда вы начинаете иметь 4 или 5 столбцов, где значения одинаковы, оно начинает становиться довольно многословным.
IsЕсть ли лучший способ сделать это?
------------- Уточнение, как должен выглядеть вывод ----------------- Окончательный JSON для вышеуказанных массивов должен выглядеть следующим образом:
[
{
"person": "john",
"foods": [
{
"food": "chocolate",
"food": "pizza",
"food": "coffee"
}
]
},
{
"person": "susan",
"food": "licorice"
}
]
, иначе у Сьюзен будут "продукты": [{"food": "солодка"}] что-то в этом роде.