$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
может, как в последнее время все чаще нахожу, есть готовая функция в php ?
$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']]
$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 и у каждого есть пара атрибутов. Я по другому массив и не смог бы наверно сделать.
Спасиб, а какой формат, тк я сам его задавал. У меня в любой случае есть ключевые значения от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
жесткач) работает то супер, но какая то фигня для меня непонятная &$arr
Спустя 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
а это стабильно? я просто так не делал никогда, поэтому и интересуюсь. и вообще сложно убрать этот знак заменить на тот же unset ?
а это стабильно? я просто так не делал никогда, поэтому и интересуюсь. и вообще сложно убрать этот знак заменить на тот же 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) |
я не готов к новому пока)))) |
и это очень плохо
Спустя 1 минута, 4 секунды (4.04.2012 - 15:12) maximka787 написал(а):
glock18
приучу себя обязательно! интересная штука
приучу себя обязательно! интересная штука
Спустя 4 минуты, 18 секунд (4.04.2012 - 15:16) glock18 написал(а):
Цитата (killer8080 @ 4.04.2012 - 12:11) | ||
и это очень плохо |
Лентяй Максимка то
_____________
..Работает - не трогай!