#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 () или как еще я предполагаю умножить количество каждого элемента на цену?