[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Посчитать сумму в массиве
maximka787
Ребят, посоветуйте если знаете, как посчитать сумму элементов массива в моем примере.

$tab = array
(
'1' => array(
'category' => '1',
'summa' => '1000'
),

'2' => array(
'category' => '2',
'summa' => '1500'
),

'3' => array(
'category' => '2',
'summa' => '2000'
)

);


Мне вообще НА БУДУЩЕЕ в идеале получить
1 => 1000,
2 => 1750 (1750 это сумма 1500 + 2000 / количество 2 )

т.е. надо посчитать среднее значение для каждой категории.

Я сделал двумя foreach но такая громоздкая конструкция получилась.



Спустя 6 минут, 53 секунды (4.04.2012 - 14:00) killer8080 написал(а):
Цитата (maximka787 @ 4.04.2012 - 13:53)
Я сделал двумя foreach но такая громоздкая конструкция получилась.

Покажи что получилось.

Спустя 9 минут, 15 секунд (4.04.2012 - 14:09) maximka787 написал(а):
killer8080

$tab = array
(
'1' => array(
'category' => '1',
'summa' => '1000'
),
'2' => array(
'category' => '2',
'summa' => '1500'
),
'3' => array(
'category' => '2',
'summa' => '2000'
),
'4' => array(
'category' => '2',
'summa' => '2500'
)
);


//echo '<pre>'.print_r($tab,1).'</pre>';


$total = array(); //считает сумму для каждой категории
$cnt_arr = array(); // считает количество строк в каждой группе

foreach($tab as $key => $value)
{
// наполняем суммой
$total[$tab[$key]['category']] += $tab[$key]['summa'];

// считаем колич. в каждой группе
$cnt_arr[$tab[$key]['category']] += 1;
}

//echo '<pre>'.print_r($total,1).'</pre>';
//echo '<pre>'.print_r($cnt_arr,1).'</pre>';


$final = array();

foreach($tab as $key => $value)
{
$final[$key] = $total[] / $cnt_arr[]; // вот тут застрял
}


может, как в последнее время все чаще нахожу, есть готовая функция в php ?

Спустя 13 минут, 33 секунды (4.04.2012 - 14:23) glock18 написал(а):
а что застрял то:

$total[$tab[$key]['category']] / $cnt_arr[$tab[$key]['category']]

Спустя 3 минуты (4.04.2012 - 14:26) glock18 написал(а):
Цитата (maximka787 @ 4.04.2012 - 11:09)
может, как в последнее время все чаще нахожу, есть готовая функция в php ?


формат массива был бы другой, можно было бы проще сделать. А так - либо менять формат сейчас, либо так разбирать

Спустя 6 минут, 23 секунды (4.04.2012 - 14:32) maximka787 написал(а):
glock18
Спасиб, а какой формат, тк я сам его задавал. У меня в любой случае есть ключевые значения от1 до 10 и у каждого есть пара атрибутов. Я по другому массив и не смог бы наверно сделать.

Спустя 2 минуты, 51 секунда (4.04.2012 - 14:35) killer8080 написал(а):
maximka787
как вариант
$tab = array
(
'1' => array(
'category' => '1',
'summa' => '1000'
),

'2' => array(
'category' => '2',
'summa' => '1500'
),

'3' => array(
'category' => '2',
'summa' => '2000'
)

);


$result = array();
foreach($tab as $arr)
$result[$arr['category']] []= $arr['summa'];

foreach($result as &$arr)
$arr = array_sum($arr) / count($arr);

echo '<pre>'.print_r($result, 1).'</pre>';

Спустя 1 минута, 57 секунд (4.04.2012 - 14:37) maximka787 написал(а):
killer8080
благодарю, сейчас попробую)

Спустя 2 минуты, 43 секунды (4.04.2012 - 14:40) maximka787 написал(а):
killer8080
жесткач) работает то супер, но какая то фигня для меня непонятная &$arr
smile.gif

Спустя 1 минута, 18 секунд (4.04.2012 - 14:41) glock18 написал(а):
после второго цикла unset($arr);

Спустя 7 минут, 26 секунд (4.04.2012 - 14:49) killer8080 написал(а):
Цитата (maximka787 @ 4.04.2012 - 14:40)
жесткач) работает то супер, но какая то фигня для меня непонятная &$arr

Спустя 1 минута, 13 секунд (4.04.2012 - 14:50) maximka787 написал(а):
glock18
а это стабильно? smile.gif я просто так не делал никогда, поэтому и интересуюсь. и вообще сложно убрать этот знак заменить на тот же unset ?

Спустя 1 минута, 25 секунд (4.04.2012 - 14:51) killer8080 написал(а):
Цитата (maximka787 @ 4.04.2012 - 14:50)
и вообще сложно убрать этот знак заменить на тот же unset ?

Что заменить? Ссылку?

Спустя 48 секунд (4.04.2012 - 14:52) maximka787 написал(а):
killer8080
да, т.е привести к для меня понятному виду без &

Спустя 1 минута, 50 секунд (4.04.2012 - 14:54) killer8080 написал(а):
Цитата (maximka787 @ 4.04.2012 - 14:52)
да, т.е привести к для меня понятному виду без &

foreach($result as $k => $v)
$result[$k] = array_sum($v) / count($v);

Только смысл?

Спустя 6 минут, 52 секунды (4.04.2012 - 15:01) glock18 написал(а):
Цитата (maximka787 @ 4.04.2012 - 11:52)
да, т.е привести к для меня понятному виду без &


а не лучше сделать, что вид с & тоже был понятен?

Спустя 7 минут, 17 секунд (4.04.2012 - 15:08) maximka787 написал(а):
killer8080
спасибо большое, пусть лучше так! я не готов к новому пока))))

Спустя 2 минуты, 46 секунд (4.04.2012 - 15:11) killer8080 написал(а):
Цитата (maximka787 @ 4.04.2012 - 15:08)
я не готов к новому пока))))

и это очень плохо tongue.gif

Спустя 1 минута, 4 секунды (4.04.2012 - 15:12) maximka787 написал(а):
glock18
приучу себя обязательно! интересная штука

Спустя 4 минуты, 18 секунд (4.04.2012 - 15:16) glock18 написал(а):
Цитата (killer8080 @ 4.04.2012 - 12:11)
Цитата (maximka787 @ 4.04.2012 - 15:08)
я не готов к новому пока))))

и это очень плохо tongue.gif

Лентяй Максимка то smile.gif


_____________
..Работает - не трогай!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.