【发布时间】:2017-01-09 21:17:58
【问题描述】:
我正在为一家每月提供食物的餐厅准备菜单系统。这是我的问题:
餐厅提供不同的套餐。每个包裹每天包含若干份。例如,套餐 A 每天供应 3 次,而套餐 B 每天供应 2 次。我正在构建的在线订购系统是一个按天数划分的多页面订购系统。所以 20 天,有 20 页。一天的选择完成后,我想将选择存储在一个多维数组中。请参考以下结构。
$selection_package_a = array(
"Serving_Day1" => array (
"Serving_1" => Pizza,
"Serving_2" => Salad,
"Serving_3" => Smoothies
),
"Serving_Day2" => array (
"Serving_1" => Salad,
"Serving_2" => Juices,
"Serving_3" => Fruits
),
);
$selection_package_b = array(
"Serving_Day1" => array (
"Serving_1" => Pizza,
"Serving_2" => Salad
),
"Serving_Day2" => array (
"Serving_1" => Salad,
"Serving_2" => Juices
),
);
“Serving_Day1”到“Serving_Day20”取决于一个月内投放的天数。因此,如果套餐每月仅投放 10 天,则“Serving_Day10”将是最后一个字段。
在“Serving_Day1”、“Serving_1”等取决于存储在数据库中的份数。
将@yarwest 的答案向前迈了一步,我已经将进度粘贴到现在。我想这只是实现所需输出的又一步。
$meals_selected_array = [];
$total_meals_array = [];
if( $num_row_packages >= 1 ) {
while($row_packages = mysqli_fetch_array ($result_packages)) {
$package_id = $row_packages['package_id'];
$package_name = $row_packages['package_name'];
$servings_count = $row_packages['servings_count'];
$days_served = $row_packages['days_served'];
//repeating it based on the number of days_served
for ($i = 1; $i <= $days_served; $i++) {
//how to define/declare $total_meals_array['day_' . $i]
//adding user selection for the day in $meals_selected_array array
for ($y = 1; $y <= $servings_count; $y++) {
$meals_selected_array["meal_id_day_" .$i] = "Not Available";
$meals_selected_array["meal_code_day_" .$i] = "Not Available";
$meals_selected_array["meal_type_day_" .$i] = "Meal";
}
//what to do either here or after the below loop in order to add $meals_selected_array above values to $total_meals_array['day_' . $i].
}
}
}
当我$print_r($meals_selected_array) 时,我得到的结果是一个具有完美标签和值的关联数组。现在我只需要将这个关联数组添加到每一天,以使我的主数组成为多维数组。
所以我想要的 $total_meals_array 输出如下:
Array
(
[day_1] => Array
(
[meal_id_day_1] => "1" //This will be my Unique ID of selected meal
[meal_code_day_1] => "Pizza" //This will be the name of meal
[meal_type_day_1] => "Main Course" //This will be the serving Type
)
[day_2] => Array
(
[meal_id_day_2] => "4" //This will be my Unique ID of selected meal
[meal_code_day_2] => "Lemonade" //This will be the name of meal
[meal_type_day_2] => "Drinks" //This will be the serving Type
)
[day_3] => Array
(
[meal_id_day_3] => "8" //This will be my Unique ID of selected meal
[meal_code_day_3] => "Custard" //This will be the name of meal
[meal_type_day_3] => "Dessert" //This will be the serving Type
)
)
【问题讨论】:
-
只是澄清一下,服务天数可以改变吗?或者是为每个包设置的东西?
-
他们可以改变。例如,“套餐 A”每月提供 10 天,每天提供 3 份,而“套餐 B”每月提供 20 天,每天提供 2 份。
-
所以是每个包裹的固定天数?点“套餐A”的人,10天送餐?
-
为什么不使用普通的索引数组,索引从 0 到 19 以防 20 天,然后子数组索引为 0 到 2(当天 3 份时)?这是更常见的方法。
-
@yarwest 是正确的。选择“套餐A”的每个人都将获得10天的食物。
标签: php for-loop associative-array