使用PHP创建JSON对象 - 从数据库列的提取值中获取
问题描述:
我是PHP新手。 我正在推荐系统的项目。使用PHP创建JSON对象 - 从数据库列的提取值中获取
这里我从数据库中提取值,如“userid”和“items”。
和,我想创建这样
{
"john": ["a", "b", "c", "d", "e"],
"alex": ["a", "b", "x", "y", "z"],
"me": ["a", "b", "c", "f", "r"]
}
JSON对象,但我所得到的是
[
{
"john": ["a", "b", "c", "d", "e"],
},
{
"alex": ["a", "b", "x", "y", "z"],
},
{
"me": ["a", "b", "c", "f", "r"]
}
]
这是我已经尝试了代码,
<?php
include "init.php";//database connection
$sql = "select * from Orders";
$result = mysqli_query($connection,$sql);
while($row = mysqli_fetch_assoc($result)){
$userid = $row['userid'];
$items = $row['items'];
$itemsarray = explode(',', $items);
if(!in_array($userid, array_keys($user_item))){
$user_item[$userid] = $itemsarray;
}
else{
$values = $user_item[$userid];
$arr = array_merge($values,$itemsarray);
$user_item[$userid] = $arr;
}
}
echo json_encode($user_item);
?>
答
您需要在顶层设置密钥。否则PHP会将其转换为JSON数组。更换
$arr = [$userid => $itemsarray];
array_push($user_item, $arr);
与
$user_item[$userid] = $itemsarray;
感谢ü@Machavity,它的工作。如果有多个项目具有相同的密钥? –
如果他们有相同的密钥,它会覆盖。你需要另外提出一个问题,以更好地解释你想要什么 – Machavity
谢谢你,我明白了。 –