2016-11-10 4 views
1

Ich bin neu in PHP. Ich arbeite am Projekt des Empfehlungssystems.JSON-Objekt-Erstellung mit PHP - aus abgerufenen Werten von Datenbankspalten

hier bin ich holen Werte aus der Datenbank wie "userid" und "Artikel".

und möchte ich JSON-Objekt wie dieses

{ 
    "john": ["a", "b", "c", "d", "e"], 
    "alex": ["a", "b", "x", "y", "z"], 
    "me": ["a", "b", "c", "f", "r"] 
} 

schaffen, aber was ich bin immer ist

[ 
    { 
     "john": ["a", "b", "c", "d", "e"], 
    }, 
    { 
     "alex": ["a", "b", "x", "y", "z"], 
    }, 
    { 
     "me": ["a", "b", "c", "f", "r"] 
    } 

] 

dies der Code ist, was ich versucht habe,

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

Antwort

3

Sie müssen den Schlüssel auf der obersten Ebene festgelegt haben. Andernfalls konvertiert PHP es in ein JSON-Array. Ersetzen

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

mit

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

thank u @Machavity, es funktionierte. Was ist, wenn es mehrere Artikel mit demselben Schlüssel gibt? –

+0

Wenn sie denselben Schlüssel haben, wird er überschrieben. Sie müssen eine separate Frage mit einer besseren Erklärung von dem, was Sie wollen, – Machavity

+0

Ich danke Ihnen, ich habe es. –

Verwandte Themen