php - 使用 PHP 的动态 JSON 数组
问题描述
我正在使用 PHP 和一些 JSON 数组来显示表中的数据。以下代码类似于下图:
我的问题:我使用以下代码在 android 应用程序上向我的用户提供一些包。在我的food_category
桌子上,ID 6-7-8 是饮料、餐点和甜点。如何在许多数组中显示完整的食物和饮料以及膳食和甜点,如下图所示,显示 1 个数组的所有信息?现在我的代码在一些数组中分隔了 ids 和 names 和 ...。你们能帮帮我吗,伙计们?
食物表:
代码:
public function package_recommender($restaurant_id, $count, $money)
{
$response = array();
$response['success'] = true;
$response['message'] = "success";
$connection = null;
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
try {
$connection = mysqli_connect("localhost", "root", "", PackageRecommender::DATABASE_NAME);
$sqlQuery1 = "SELECT * FROM food where NOT foodCategory_id=6 And NOT foodCategory_id=7 And NOT foodCategory_id=8 And restaurant_id='$restaurant_id' And stock>='$count' And isActive = 1;";
$result1 = $connection->query($sqlQuery1);
$sqlQuery2 = "SELECT * FROM food WHERE foodCategory_id=7 And restaurant_id = '$restaurant_id' And stock>'$count' And isActive = 1 order by updateDate desc;";
$result2 = $connection->query($sqlQuery2);
$sqlQuery3 = "SELECT * FROM food WHERE foodCategory_id=8 And restaurant_id = '$restaurant_id' And isActive = 1 order by updateDate desc;";
$result3 = $connection->query($sqlQuery3);
$sqlQuery4 = "SELECT * FROM food WHERE foodCategory_id=6 And restaurant_id = '$restaurant_id' And isActive = 1 order by updateDate desc;";
$result4 = $connection->query($sqlQuery4);
$desertArray = $result2->fetch_assoc();
$drinkArray = $result3->fetch_assoc();
$mealArray = $result4->fetch_assoc();
$packagesArray = array();
if ($result1->num_rows > 0) {
$foodArray = $result1->fetch_assoc();
foreach ($foodArray as $key => $foodValue) {
$package = array();
$package['food'] = $foodValue;
if (isset($mealArray[$key])) {
$package['meal'] = $mealArray[$key];
}
if (isset($drinkArray[$key])) {
$package['drink'] = $drinkArray[$key];
}
if (isset($desertArray[$key])) {
$package['desert'] = $desertArray[$key];
}
array_push($packagesArray, $package);
}
$response["package"] = $packagesArray;
}
echo json_encode($response);
} catch (mysqli_sql_exception $e) {
$response['success'] = false;
$response['message'] = "error 101";
die(json_encode($response));
}
}
解决方案
好吧,我将在这里进行一个巨大的飞跃,假设您拥有相同数量的食物、膳食、饮料和甜点,并且您只想将它们作为一个组合显示在一个包装中,而没有任何特定的顺序或逻辑。
因此,查看您的代码,您现在有 4 个数组:
$foodArray = array();
$desertArray = array();
$drinkArray = array();
$mealArray = array();
如果你想将它们简单地组合成一个包,这将是最简单的方法,首先你声明一个包数组:
$packagesArray = array();
然后只需遍历您的一个数组(如食物),制作一个键值对,在一个 foreach 循环中检查其他数组并添加一个包:
foreach ($foodArray as $key => $foodValue){
$package = array();
$package['food'] = $foodValue;
if(isset($mealArray[$key])){
$package['meal'] = $mealArray[$key];
}
if(isset($drinkArray[$key])){
$package['drink'] = $drinkArray[$key];
}
if(isset($desertArray[$key])){
$package['desert'] = $desertArray[$key];
}
array_push($packagesArray, $package);
}
$response["package"] = $packagesArray;
现在,就像我说的,我不知道这些包裹是否在某种程度上与食物、饮料和膳食有关。这只是一个简单的例子。
推荐阅读
- android - android studio-依次播放音频文件
- c# - UWP mapcontrol AltitudeReferenceSystem 未应用于地图项
- node.js - 生成过程关闭后无法删除文件夹
- python - 如果字符串不在另一个单项字符串列表中,则从列表中删除字符串
- python - 如何分别运行多输入 keras 模型?
- python - 如何避免 python 循环中的特定交互?我想跳过提到的代码 3 7 和 9 但它只删除了 3
- oracle - 语句未在 pl/sql 中打印
- go - 互斥锁如何与单例一起使用?
- http - Flutter/Dart http 客户端 - 内容类型标头发送两次
- javascript - 类型 '"account_onboarding"' 不可分配给 typescript nodejs 上的条带 api 中的类型 'Type'.ts