计算Multi dimensional Array PHP中每个配方的总价格

时间:2018-05-24 15:59:29

标签: php

我试图找出如何:

  • 显示每个食谱的名称并列出成分。
  • 显示每种食谱的成本。
  • 显示所有食谱的总费用。

    问题是我不能得到每个食谱的总量(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/>";
      }
    

3 个答案:

答案 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);

https://3v4l.org/boMES