Я считаю, что пишу здесь какой-то неэффективный код, но не могу найти более эффективный способ его написания.
Это часто происходит с выводом 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 столбцов с одинаковыми значениями, это становится довольно подробным.
Есть лучший способ сделать это?
----------------------------Уточнение того, как должен выглядеть вывод ------------------ Окончательный json для вышеуказанных массивов должен выглядеть так
[ { "person": "john", "foods": [ { "food": "chocolate", "food": "pizza", "food": "coffee" } ] }, { "person": "susan", "food": "licorice" } ]
или у Сьюзен была бы "еда": [{"еда":"солодка"}] что-то в этом роде.