Мультипликатор 3-мерного массива php

#php #arrays

#php #массивы

Вопрос:

Это вопрос домашнего задания. Я не прошу полного ответа, просто несколько советов, чтобы продолжать двигаться вперед. Я работал над этим слишком долго. Я умножаю трехмерный массив, содержащий список людей и количество инструментов, которые они покупают, Я умножаю количество товаров на массив цен. Проблема, с которой я сталкиваюсь, заключается в том, что все три массива выдают одинаковую сумму вместо умножения каждого на другой коэффициент. Я попробовал несколько разных подходов. Я подумал, что мне нужно использовать оператор while или if else, чтобы умножить каждую цену на ее значение $ key => $ value, но, похоже, не получается заставить это работать.

Вопрос о домашнем задании

   <?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>';

                     }

                   }


              ?>       
  

Комментарии:

1. Это результат, который я получаю при выполнении кода. Name = Tomtotal9 Молотков = 3total9 Пил = 2total9 сверл = 2total9 Name = Suetotal9 молотков = 2total9 Пил = 3total9 сверл = 2total9 Name = Stevetotal9 молотков = 2total9 Пил = 2total9 сверл = 2total9

Ответ №1:

Вам не нужно полное решение, верно? Ну, вы просто суммируете значение Hammers. Как насчет того, чтобы просто выполнить foreach в вашем $names и вычислить $total внутри него, используя $prices массив. Нет вложенных for файлов. В этом нет необходимости.

Надеюсь, я был полезен, и если вам нужен какой-то код, просто прокомментируйте, что я отредактирую этот ответ.

Ответ №2:

Думаю, этот простой скрипт должен это сделать?

     $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 ...
  

Комментарии:

1. Я искал общее количество всех элементов в каждом массиве, но я также хотел найти общее количество каждого элемента. Итак, ответ будет выглядеть следующим образом. Итого Тома хаммера = 9 долларов, итого пилы = 5 долларов и итого сверления = 6,50 долларов. Вот почему мой код выглядит так, как описано выше. Проблема, с которой я столкнулся, заключалась в том, что было бы сказано, что tom = 9 молотков = 9 пил = 9 сверл = 9. Затем он будет зацикливаться на Sue и давать ей те же ответы. Когда у них разное количество элементов.

Ответ №3:

Есть две причины, по которым вы получаете одно и то же число повторно. Во-первых, когда вы делаете это:

 $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 .

Ответ №4:

Проблема заключается вот в чем

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

Комментарии:

1. Я думаю, вам понадобятся = вторые два уравнения.

2. В чем проблема. Как это исправить. Почему .. и т.д. … извините, но в остальном это не очень полезный ответ.

3. Итак, не могли бы вы предложить функцию multiply () или как еще я предполагаю умножить количество каждого элемента на цену?