2016-05-06 2 views
0

Я пытаюсь объединить по меньшей мере два массива в JSON, используя PHP. В настоящее время это мой код:Объединить вложенные массивы в PHP, возвращающие json

/* Get most frequently used applications */ 
$var = array(); 
$sql = "SELECT * FROM MostFrequentlyApps WHERE UID = 'yxz'"; 
$result = mysqli_query($con, $sql); 

while($obj = mysqli_fetch_object($result)) { 
    $var[] = $obj; 
} 

$allData = array_merge($allData,$var); 

/* Get user favorites */ 
$var = array(); 
$sql = "SELECT * FROM UserFavorites WHERE UID = 'yxz'"; 
$result = mysqli_query($con, $sql); 

while($obj = mysqli_fetch_object($result)) { 
    $var[] = $obj; 
} 

$allData = array_merge($allData,$var); 

echo json_encode($allData); 

И JSON-кода я получаю выглядит так:

[ 

{ 

    "UID": "xyz", 
    "Application": "Test", 
    "AppLink": "http://www.google.com", 
    "AppIcon": "icon.png" 

}, 
{ 

    "UID": "xyz", 
    "Application": "Test2", 
    "AppLink": "http://www.facebook.com", 
    "AppIcon": "icon2.png" 

}, 
{ 

    "UID": "xyz", 
    "URL": "www.yahoo.com" 

}, 

{ 
    "UID": "xyz", 
    "URL": "www.bing.com" 
} 

] 

Но я должен был бы результаты выглядеть, поэтому вид иерархии с одной частью посевом приложения и другая часть, показывая фаворит:

{ 

     "apps": 

    [ 

    { 

     "UID": "xyz", 
     "Application": "Test", 
     "AppLink": "http://www.google.com", 
     "AppIcon": "Icon.png" 

    }, 

    { 
     "UID": "xyz", 
     "Application": "Test2", 
     "AppLink": "http://www.facebook.com", 
     "AppIcon": "icon2.png" 
    } 
] 

    "favs": 

[ 

    { 

     "UID": "xyz", 
     "URL": "www.yahoo.com" 
    }, 

    { 
     "UID": "xyz", 
     "URL": "www.bing.com" 
    } 
] 

} 

Но моя проблема в том, что я не знаю, как объединить эти два массива и получать эту иерархическую структуру, в конце концов. Нужно ли сначала объединять массивы, а затем кодировать их в JSON? Может, кто-то может дать мне подсказку.

Заранее благодарен!

ответ

1

Вот что вам нужно сделать:

// result array with two sub-arrays 
$allData = array(
    'favs' => array(), 
    'apps' => array(), 
); 

/* Get most frequently used applications */ 
$sql = "SELECT * FROM MostFrequentlyApps WHERE UID = 'yxz'"; 
$result = mysqli_query($con, $sql); 

// add apps right to `apps` sub=array 
while($obj = mysqli_fetch_object($result)) { 
    $allData['apps'][] = $obj; 
} 

/* Get user favorites */ 
$sql = "SELECT * FROM UserFavorites WHERE UID = 'yxz'"; 
$result = mysqli_query($con, $sql); 

// add favourites right to `favs` sub=array 
while($obj = mysqli_fetch_object($result)) { 
    $allData['favs'][] = $obj; 
} 

echo json_encode($allData); 
+0

работает как шарм, спасибо! –

0

Попробуйте это

/* Get most frequently used applications */ 
$apps = array(); 
$sql = "SELECT * FROM MostFrequentlyApps WHERE UID = 'yxz'"; 
$result = mysqli_query($con, $sql); 

while($obj = mysqli_fetch_object($result)) { 
    $apps[] = $obj; 
} 



/* Get user favorites */ 
$favs = array(); 
$sql = "SELECT * FROM UserFavorites WHERE UID = 'yxz'"; 
$result = mysqli_query($con, $sql); 

while($obj = mysqli_fetch_object($result)) { 
    $favs[] = $obj; 
} 

$allData = array("apps"=> $apps,"favs"=> $favs); 

echo json_encode($allData); 
Смежные вопросы