Как я могу получить сумму членов массива? - PullRequest
0 голосов
/ 18 октября 2011

Это массив PHP:

array
  'ItemId' => 
    array
      0 => string '32' (length=2)
      1 => string '33' (length=2)
      2 => string '35' (length=2)
  'ItemQty' => 
    array
      0 => string '2' (length=1)
      1 => string '1' (length=1)
      2 => string '1' (length=1)

Чего я хотел бы добиться, так это подсчитать числа в строках в ItemQty

Так что здесь результат будет 4.

Я пытался использовать цикл foreach, но результат всегда 3, а не 4 (я думаю, логично, но не могу решить)

Вышеприведенный массив - это маленькая версия var_dump значений POST.Это для проверки формы.

$count_total = 0;

foreach ($jcart->get_contents() as $item) {     

            ++$count_total;

}

Что также усложняет то, что $ jcart-> get_contents () - это не просто обычный массив.По крайней мере, сейчас я не знаю, как применить его к решениям ниже.

var_dump ($ jcart);дает объект, в котором итоговая сумма уже сохранена

private 'itemCount' => int 4

Ответы [ 4 ]

3 голосов
/ 18 октября 2011

Использование array_sum().

$sum = array_sum($arr['ItemQty']);
1 голос
/ 18 октября 2011

Как насчет чего-то вроде:

echo array_sum(array_map('intval', $data['ItemQty']))

Это вызовет intval() для каждого элемента в массиве $data['ItemQty'], а затем вызовет array_sum для получения суммы результата.

0 голосов
/ 18 октября 2011

Если вы просто хотите суммировать числа, вы можете использовать array_sum(), если это одномерный массив. Или, в качестве альтернативы, вы можете использовать цикл foreach и выполнять его итерацию при добавлении в sum var, например:

$sum = 0;
foreach($item in $items) {
    $sum += $item;
}

Поскольку ваш вопрос также может означать count все значения в массиве. Вы можете использовать функцию PHP count() для подсчета общих значений в массиве.

0 голосов
/ 18 октября 2011

Это сделает это:

$sum = 0;
foreach ($array['ItemQty'] as $val) {
  $sum += $val;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...