#php #arrays
#php #массивы
Вопрос:
У меня есть этот массив:
array(2) {
[0]=>
array(5) {
["id"]=>
string(1) "1"
["name"]=>
string(5) "Test1"
["weight"]=>
string(3) "5.0"
["price"]=>
string(1) "7"
["quantity"]=>
string(1) "2"
}
[1]=>
array(5) {
["id"]=>
string(1) "2"
["name"]=>
string(5) "Test2"
["weight"]=>
string(3) "7.0"
["price"]=>
string(2) "11"
["quantity"]=>
string(1) "1"
}
}
Я могу добавить цену с помощью этого:
echo array_sum(array_column($items, 'price'));
Но у меня возникают проблемы с учетом элементов, количество которых превышает 1. Как я могу правильно суммировать это в PHP?
Редактировать: проблема с моим кодом, если это неясно, заключается в том, что он не учитывает элементы с количеством более 1. Общее количество для этого должно быть 25. Код, который я использовал, говорит, что это 18.
Комментарии:
1. Извините, не понимаю проблему. Код, который вы показываете, работает так, как я бы выразился, поэтому, возможно, вы могли бы объяснить, что он выводит, и что с ним не так
2. Он не учитывает элементы с количеством более 1,
3. Ооо, но это потому, что PHP не волшебный. Вы ничего не кодировали, чтобы учесть количество, поэтому он даже не пытался
4. Да, это был код, который я использовал до того, как добавил количество в массив, как я могу это сделать?
Ответ №1:
echo array_reduce(
$items,
function($total, $item) {
$total = $item['price'] * $item['quantity'];
return $total;
},
0
);
Или простой foreach
:
$total = 0;
foreach ($items as $item) {
$total = $item['price'] * $item['quantity'];
}
echo $total;
Комментарии:
1. Какие-либо преимущества в любом случае?
Ответ №2:
Вы можете использовать функцию array_walk
$total = 0;
array_walk( $arr, function ( $item ) use ( amp;$total )
{
$total = $item['price'] * $item['quantity'];
});
echo $total;