我正在尝试使用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?也许有人可以给我一个提示。
提前致谢!
答案 0 :(得分: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);
答案 1 :(得分: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);