我相信我一直在写一些低效率的代码,但似乎无法找出更有效的方式来写它。从mysql输出高效创建json - 独特内部的分组
这经常发生在json输出上,尽管我也遇到了一些html或xml输出的问题。
我在我的数据库中运行一个查询,它会返回一个数组。说一个人最喜欢的食物。 PHP的mysql_fetch_assoc返回
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" } ]
或苏珊会有“食物”:[{“食物”:“甘草”}]类似的东西。
假设它是由它需要被压实的递归函数应该顺序进行排序能够创建array2json递归重复。也许有人会用赏金为你创造一个。 – MindStalker 2009-12-22 02:21:33