乘三维数组php

时间:2016-10-21 18:10:29

标签: php arrays

这是一个家庭作业问题。我不是要求完整的答案只是一些提示继续前进。我一直在努力解决这个问题。我将3维数组相乘,包含人员列表和他们购买的工具数量,我将项目数量乘以一系列价格。我遇到的问题是所有三个数组都给出相同的总数而不是将每个数组乘以不同的因子。我尝试过几种不同的方法。我想我需要使用while语句或者是否要将每个价格乘以它的$ key => $ value,但似乎无法使其工作。

Homework Question

  <?php
               $names = array(array( 'Name' => 'Tom',
                                     'Hammers' => 3,
                                     'Saws' => 2,
                                     'Drills' => 2
                                    ),
                       array( 'Name' => 'Sue',
                                     'Hammers' => 2,
                                     'Saws' => 3,
                                     'Drills' => 2
                             ),
                       array( 'Name' => 'Steve',
                              'Hammers' => 2,
                              'Saws' => 2,
                              'Drills' =>2
                             )
                      );

               $prices = array('Hammers'=>3.00,'Saws'=>2.50,'Drills'=>3.25);

               for($array=0;$array<count($names);$array++){
                    foreach($names[$array] as $key=>$value)
                    {

                        $total= $names[0]["Hammers"] * $prices['Hammers'];
                        $total= $names[1]["Hammers"] * $prices['Hammers'];
                        $total= $names[2]["Hammers"] * $prices['Hammers'];
                        echo $key." = ".$value. "total".$total.'<br>';

                     }

                   }


              ?>       

4 个答案:

答案 0 :(得分:0)

你不想要完整的解决方案,对吧? 好吧,你只是总结了Hammers的价值。您只需使用$names数组在$total中进行foreach并计算其中的$prices即可。没有嵌套的for。没有必要这样做。

希望我能提供帮助,如果您需要一些代码,请注释我将编辑此答案。

答案 1 :(得分:0)

猜猜这个简单的脚本应该这样做吗?

    $total_overall = 0.0;

    foreach($names as $name) {

        $total_hammers = $name["Hammers"] * $prices["Hammers"];
        $total_saws = $name["Saws"] * $prices["Saws"];
        $total_drills = $name["Drills"] * $prices["Drills"];

        // print single prices sums if you want ...

        $total_for_person = $total_hammers + $total_saws + $total_drills;

        $total_overall += $total_for_person;

        echo "Total for person ". $name["Name"]." = ".$total_for_person;

    }

// print total overall if you want ...

答案 2 :(得分:0)

有两个原因可以反复获得相同的数字。首先,当你这样做时:

$total= $names[0]["Hammers"] * $prices['Hammers'];
$total= $names[1]["Hammers"] * $prices['Hammers'];
$total= $names[2]["Hammers"] * $prices['Hammers'];

您将值分配给$total三次。每次分配到$total时,都会覆盖以前的值。所以这三行具有相同的效果:

$total= $names[2]["Hammers"] * $prices['Hammers'];

第二个问题是你总是计算锤子的总数,而不是计算当前项目类型的总数。

除了'Name'之外,您可以使用的一件事就是$prices$names$value * $prices[$key]中的每个数组具有相同的键。这意味着您可以使用for ($array=0; $array < count($names); $array++) { foreach($names[$array] as $key => $value) { $total = $value * $prices[$key]; echo $key." = ".$value. "total".$total.'<br>'; } } 计算每个人的每个项目总数,如下所示:

Name

唯一的问题是,您将尝试计算$prices的总计,显然不需要一个,并且if中没有值。不过,使用node_modules进行清理应该相当容易。

答案 3 :(得分:-1)

问题出在这里

$total= $names[0]["Hammers"] * $prices['Hammers'];
$total= $names[1]["Hammers"] * $prices['Hammers'];
$total= $names[2]["Hammers"] * $prices['Hammers'];
echo $key." = ".$value. "total".$total.'<br>';