Идея состоит в том, что у меня есть форма с двумя редактируемыми полями, данные из них отправляются, помещаются в два многомерных массива, затем включается третий многомерный массив.
Далее я попытался использовать функцию foreach()
, чтобы получить ключи и значения для всех массивов, в конечном итоге выполнив вычисление: $nu_macro[$qu_meal][$qu_row] = $qu_rowval*$nu_macroval;
, которое предназначено для присвоения значения количества для конкретного блюда и ряда. в форме (следовательно, почему имя поля имеет формат quantity[meal_no][row_no]
), умноженной на базовое значение макроэлемента (в формате $nutrition[ingredient][macro_nutrient]
).
Причина, по которой важно сохранять номера блюд и рядов, заключается в том, что значения в созданном массиве $nu_macro
будут выводиться обратно в поля формы с теми же номерами блюд и строк.
Вот мой PHP:
include("nutrition.php");
$ingredient = $_POST['ingredient'];
$quantity = $_POST['quantity'];
foreach($ingredient as $in_meal => $in_mealval) {
foreach($in_mealval as $in_row => $in_rowval) {
foreach($quantity as $qu_meal => $qu_mealval) {
foreach($nutrition as $nu_ing => $nu_ingval) {
if($nu_ing == $in_rowval) {
foreach($nu_ingval as $nu_macro => $nu_macroval) {
foreach($qu_mealval as $qu_row => $qu_rowval) {
//echo $nu_macroval."<br />";
//$x[$qu_meal][$qu_row] = $qu_rowval*$nu_macroval;
}
}
}
}
}
}
}
И несколько строк питания. Php:
$nutrition = array(
"Avocado Hass" => array(
"calories" => 190, "protein" => 1.9,
"carbohydrates" => 1.9,
"of_which_sugars" => 0.5,
"fats" => 19.5,
"s_fats" => 4.1,
"fibre" => 3.4,
"notes" => "0"),
"Baking Potato" => array(
"calories" => 140,
"protein" => 3.9,
"carbohydrates" => 30.7,
"of_which_sugars" => 1.2,
"fats" => 0.2,
"s_fats" => 0,
"fibre" => 2.7,
"notes" => "0"),
И моя форма:
<input name="ingredient[0][0]" type="text" value="Avocado Hass" /><input name="quantity[0][0]" type="text" value="10" /><br />
<input name="ingredient[0][1]" type="text" value="Baking Potato" /><input name="quantity[0][1]" type="text" value="11" /><br />
<input name="ingredient[0][2]" type="text" value="Banana" /><input name="quantity[0][2]" type="text" value="12" /><br />
<input name="ingredient[0][3]" type="text" value="Basmati Rice(Raw)" /><input name="quantity[0][3]" type="text" value="13" /><br />
<input name="ingredient[0][4]" type="text" value="Beef Mince, Lean" /><input name="quantity[0][4]" type="text" value="14" /><br />
<input name="ingredient[1][0]" type="text" value="Beef Rump Steak" /><input name="quantity[1][0]" type="text" value="15" /><br />
<input name="ingredient[1][1]" type="text" value="Brown Rice(Raw)" /><input name="quantity[1][1]" type="text" value="16" /><br />
<input name="ingredient[1][2]" type="text" value="Casein" /><input name="quantity[1][2]" type="text" value="17" /><br />
<input name="ingredient[1][3]" type="text" value="Chicken Breast" /><input name="quantity[1][3]" type="text" value="18" /><br />
<input name="ingredient[1][4]" type="text" value="Cocoa Powder, Organic" /><input name="quantity[1][4]" type="text" value="19" /><br />
Чтобы попытаться диагностировать проблему I;
Ран var_dump()
на $x
(см. Комментарии в PHP), который возвратил array(2) { [0]=> array(5) { [0]=> int(50) [1]=> int(55) [2]=> int(60) [3]=> int(65) [4]=> int(70) } [1]=> array(5) { [0]=> int(75) [1]=> int(80) [2]=> int(85) [3]=> int(90) [4]=> int(95) } }
.
Повторяется $nu_macroval
, который возвращает 190,190,190,190,190,1.9,1.9,1.9,1.9,1.9,1.9,1.9,1.9,1.9,1.9,0.5,0.5,0.5,0.5,0.5,19.5,19.5,19.5,19.5...
(5 наборов каждого $ nu_macroval).
Я понимаю, что проблема, вероятно, в слишком большом количестве циклов, но есть ли способ заставить это работать так, как я хочу, без использования функций вложенных циклов?
Любая помощь, комментарии или ответы о том, как я могу $nu_macro[$qu_meal][$qu_row] = $qu_rowval*$nu_macroval;
быть по существу calories[0][0] = 10 * 190
, будет очень очень очень очень очень очень признательна !!
P.S. Я понимаю, что это очень длинный вопрос, и, возможно, поэтому его немного сложно объяснить, поэтому, если вы ничего не понимаете, пожалуйста, попросите разъяснений, и я постараюсь уточнить, что я хочу, как можно более конкретно.
ОБНОВЛЕНИЕ 1:
print_r()
возвращается для $_POST[]
следующим образом,
$ _ POST [ 'ингредиенты']
Array ( [0] => Array ( [0] => Avocado Hass [1] => Baking Potato [2] => Banana [3] => Basmati Rice(Raw) [4] => Beef Mince, Lean ) [1] => Array ( [0] => Beef Rump Steak [1] => Brown Rice(Raw) [2] => Casein [3] => Chicken Breast [4] => Cocoa Powder, Organic ) )
$ _ POST [ 'количество']
Array ( [0] => Array ( [0] => 10 [1] => 11 [2] => 12 [3] => 13 [4] => 14 ) [1] => Array ( [0] => 15 [1] => 16 [2] => 17 [3] => 18 [4] => 19 ) )