Начинающий с вопросом о вложенном массиве - сложение значений вместе - PullRequest
0 голосов
/ 12 октября 2009

Предположим, у меня есть такой массив:

$products = array('Shoes' =>  array('price' => 49.99, 'shipping' => 5), 
                  'Shirt' =>  array('price' => 29.99, 'shipping' => 3),
                  'Socks'=>   array('price' => 2.99, 'shipping' => 0) 
                    );

У меня проблемы с прохождением многомерного массива и добавлением элементов. Есть ли какие-нибудь советы для начинающего PHP? Спасибо.

Ответы [ 4 ]

1 голос
/ 12 октября 2009

Если вам нужна общая цена всех продуктов, включая доставку, вы можете рассчитать ее без явного цикла, используя array_sum и array_map:

echo array_sum(array_map('array_sum', $products)); // prints 90.97

Обратите внимание, что array_map применяет array_sum к каждому из внутренних массивов, после чего array_sum наконец применяется к результату этой операции.

1 голос
/ 12 октября 2009
$price = 0;
foreach($products as $product) {
  $price += array_sum($product);
}

Преимущество в том, что он более читабелен, чем при использовании array_map, но обеспечивает тот же вывод.

0 голосов
/ 12 октября 2009

Как то так?

$products = array('Shoes' =>  array('price' => 49.99, 'shipping' => 5), 
                  'Shirt' =>  array('price' => 29.99, 'shipping' => 3),
                  'Socks'=>   array('price' => 2.99, 'shipping' => 0) 
                    );

$total = 0;
foreach($products as $product)
{
    $total += $product["price"];
}

echo $total;

В каждом цикле у вас есть переменная с именем $ product. Эта переменная имеет в первом раунде «Обувь» в качестве ключа и массив в качестве значения. Так что вы можете вызывать его так же, как обычный массив.

0 голосов
/ 12 октября 2009

array_sum: http://php.net/manual/en/function.array-sum.php

примерный набросок кода:

$total = 0;
foreach($products as $item => $amount_array){
   $total += array_sum($amount_array);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...