gpt4 book ai didi

php - 从 mysql 输出高效创建 json - 在唯一值中分组

转载 作者:行者123 更新时间:2023-11-29 01:25:28 24 4
gpt4 key购买 nike

我相信我在这里编写了一些低效的代码,但似乎无法找到更有效的编写方式。

这通常发生在 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"     }]

或者苏珊会有 "foods": [{"food":"licorice"}] 之类的东西。

最佳答案

使用 json_encode:

$persons = array ();
while ($row = mysql_fetch_assoc($result))
{
if (empty($persons[$row['person']]))
$persons[$row['person']] = array ();
array_push ($persons[$row['person']], $row['food']);
}

echo json_encode ($persons);

它应该产生以下结果:

{
'john': [
'chocolate',
'pizza',
'coffee'
],
'susan': [
'licorice'
]
}

希望这有帮助

关于php - 从 mysql 输出高效创建 json - 在唯一值中分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1943514/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com