合并PHP中返回json的嵌套数组


Merge nested arrays in PHP returning json

我正在尝试使用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吗?也许有人能给我一个提示。

提前感谢!

这里是您需要做的:

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

试试这个

/* 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);