我试图找出如何:
显示所有食谱的总费用。
问题是我不能得到每个食谱的总量(Super Energy Mix& Super Fruit Punch),我的解决方案无法正常获得总数。我需要另一个循环吗?
$recipes = array(
'Super Energy Mix' => array(
'Sugar' => array('quantity' =>'1', 'price' => '1.15'),
'Chocolate' => array('quantity' =>'1', 'price' => '2.10'),
'Squash' => array('quantity' =>'1', 'price' => '1.35'),
'Coffee' => array('quantity' =>'1', 'price' => '3.54')
),
'Super Fruit Punch' => array(
'Rum' => array('quantity' =>'1', 'price' => '3.52'),
'Vodka' => array('quantity' =>'1', 'price' => '3.53'),
'Orange Juice' => array('quantity' =>'1', 'price' => '1.35'),
'Lime' => array('quantity' =>'1', 'price' => '1.35')
)
);
$sum = '0';
foreach($recipes as $recipe => $key)
{
echo $recipe."<br/>";
foreach($key as $keys => $value)
{
echo $keys;
echo $value['price']."<br/>";
$sum += $value['price'];
}
echo $sum."<br/>";
}
答案 0 :(得分:0)
正如评论中所提到的,你只是在开始时重置总和,所以到目前为止所有的总数都是。
将$sum
的设置移动到循环中,以便为每个食谱重置。
此版本还会将价格乘以数量 - 不确定是否需要此项,但在某些时候可能很重要,但如果您不需要,请将其删除。
$totalCost = 0;
foreach($recipes as $recipe => $key)
{
echo $recipe."<br/>";
$sum = 0;
foreach($key as $keys => $value)
{
echo $keys;
echo $value['price']."<br/>";
$sum += ($value['price']*$value['quantity']);
}
echo $sum."<br/>";
$totalCost += $sum;
}
echo "Total cost=".$totalCost."<br/>";
根据相关评论添加总费用。
答案 1 :(得分:0)
取消设置$sum
变量可以解决您的问题。我还删除了$sum = '0';
,因为没有必要告诉PHP变量为零。我还对您的代码进行了微调,以使页面上的文本更容易阅读。
foreach($recipes as $recipe => $key)
{
echo '<strong>' . $recipe . "</strong><br/>";
foreach($key as $keys => $value)
{
echo $keys . ': ';
echo $value['price']."<br/>";
$sum += $value['price'];
}
echo $sum."<br/>";
unset($sum);
}
答案 2 :(得分:0)
您还可以在foreach中的数组中构建新项目 这样,您可以轻松获得每个食谱的小计和总计。
Foreach($recipes as &$recipe){
Foreach($recipes as &$val){
$val['subtotal'] = $val['quantity'] * $val['price'];
}
$recipe['total'] = array_sum(array_column($recipe, 'subtotal'));
}
$recipes['total'] =array_sum(array_column($recipes, 'total'));
Var_dump($recipes);