2016-11-10 173 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

謝謝你,我明白了。 –