gpt4 book ai didi

php - 如何生成包含文本数组的有效 json 输出

转载 作者:行者123 更新时间:2023-11-29 17:51:34 24 4
gpt4 key购买 nike

我在本地服务器中使用 phpMyAdmin 创建了一个 mySQL 数据库。在这个数据库中,我存储了我 friend 的名字和最喜欢的 NBA 球队(以及作为数据库主键的 ID)。然而,我的一些 friend 可能有两支最喜欢的球队。我编写并运行以下 php 脚本来从数据库中的一张表中检索这些数据(我知道这不是使用一张表来处理多对多关系的最佳方式)并将它们投影到我的本地网络服务器(XAMPP)上:

$dbServername = 'localhost';
$dbUsername = 'root';
$dbPassword = '';
$dbName = 'Friends';

$conn = mysqli_connect($dbServername, $dbUsername, $dbPassword, $dbName);

header('Content-Type: application/json');

$sql = 'SELECT * FROM friends;';
$result = mysqli_query($conn, $sql);
$resultCheck = mysqli_num_rows($result);

arr = [];

if ($resultCheck > 0) {
while ($row = mysqli_fetch_assoc($result)) {
$arr[] = $row;

}
}

echo json_encode($arr, JSON_PRETTY_PRINT);

但是,通过这种方式,我为一个人获取此输出:

   [{
"id": "1",
"name": "David Belton",
"team": "Boston Celtics"
}, {
"id": "1",
"name": "David Belton",
"team": "Cleveland Cavaliers"
}]

但是,我想得到这样的东西作为每个特定人的输出:

{
"id": "1",
"name": "David Belton",
"team": ["Boston Celtics", "Cleveland Cavaliers"]
}

这在 PHP 中可能吗?

如果是这样,是否建议或者我应该在数据库中使用 MySQL 来执行此操作?

最佳答案

您必须更改 while 循环,以便根据 ID 列仅向最终数组添加唯一数据:

if ($resultCheck > 0) {
while ($row = mysqli_fetch_assoc($result)) {
if (!isset($arr[$row['id']])) {
$arr[$row['id']] = $row;
$arr[$row['id']]['location'] = [$row['location']];
} else {
$arr[$row['id']]['location'][] = $row['location'];
}
}
}

echo json_encode(array_values($arr), JSON_PRETTY_PRINT);

但你应该考虑@ceejayoz 的评论。

关于php - 如何生成包含文本数组的有效 json 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49279275/

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