2016-11-10 169 views
1

我是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); 
?> 

回答

3

您需要在顶层设置密钥。否则PHP会将其转换为JSON数组。更换

$arr = [$userid => $itemsarray]; 
array_push($user_item, $arr); 

$user_item[$userid] = $itemsarray; 
+0

感谢ü@Machavity,它的工作。如果有多个项目具有相同的密钥? –

+0

如果他们有相同的密钥,它会覆盖。你需要另外提出一个问题,以更好地解释你想要什么 – Machavity

+0

谢谢你,我明白了。 –