到目前为止,我刚刚在简单的数据行上使用了PHP的json_encode(),例如
{
"name":"bob",
"age":"22"
}
但是我需要返回具有数组的JSON。
示例输出
{
"success":true,
"payload":
{
"venuedata":
{
"id":"1",
"name":"venue name"
},
"menus": [
{"menuid":"1","menuname":"food","items": [{"item":"pizza","cost":"$12.50"},{"item":"burger","cost":"$14.50"}]},
{"menuid":"2","menuname":"drinks","items": [{"item":"pint of beer","cost":"$5.50"}]}
]
}
}
现在,venuedata对象将来自一个PDO查询,菜单将来自另一个查询,每个菜单的项目将来自另一个查询。
如何使用json_encode返回示例JSON?
答案 0 :(得分:1)
假设菜单项和菜单用外键相互连接的一般化示例。 创建一个菜单数组,并为数组中的每个菜单元素添加菜单项。
$arrMenus = array();
$menus = getMenusFromDB();
foreach($menus as $menu) {
$menuItems = getMenuItemsFromDB($menu["id"]);
$arrMenuItems = array();
foreach($menuItems as $menuItem){
$arrMenuItems []= array(
"item" => $menuItem["item"],
"cost" => $menuItem["cost"]
);
}
$arrMenus []= array(
"menuid" => $menu["id"],
"menuname" => $menu["menuname"],
"items" => $arrMenuItems
);
}
然后创建一个包含其余信息的数组,并添加"菜单"数组作为"有效载荷的一部分"阵列:
$obj = array(
"success" => true,
"payload" => array(
"venuedata" => array(
"id" => "2",
"name" => "venue name"
),
"menus" => $arrMenus
)
)
通过json_encode()转换数组后:
$json = json_encode($obj);