Программирование > PHP

Обработка данных

(1/1)

Ray007:
Подскажите элегантный способ обработки вот таких данных:


firma=9 tovar=7 kolvo=2.00
firma=10 tovar=108 kolvo=1.00
firma=10 tovar=119 kolvo=5.00
firma=10 tovar=82 kolvo=4.00
firma=14 tovar=24 kolvo=5.00
firma=14 tovar=119 kolvo=3.00
firma=14 tovar=108 kolvo=1.00
firma=14 tovar=119 kolvo=5.00
firma=14 tovar=82 kolvo=4.00
firma=14 tovar=49 kolvo=8.00


Вводятся/выводятся только значения.

Надо:
1.по каждому полю firma оптимизировать: поля tovar с одинаковым номером объединить, kolvo у них сложить
2.вычислить общее количества товаров с одинаковым номером tovar по всем полям firma
3.вывести в виде таблицы, где столбцы - значения firma, строки - значения tovar, на их пересечении - kolvo

Т.е. на входе имеем такую таблицу:


9     7   2.00
10  108   1.00
10  119   5.00
10   82   4.00
14   24   5.00
14  119   3.00
14  108   1.00
14  119   5.00
14   82   4.00
14   49   8.00


А на выходе должна получиться вот такая:


_____9 10 14  S
007  2        2
108     1  1  3
119     5  8 13
082     4  4  8
024        5  5
108
049        8  8


Есть ли простой способ сделать это php ?
:confused:

html_coder:
Ray007, к сожалению нет ни слова о том, где храняться эти данные...

Altaxar:
Да можно, и не сложно, а вот у тебя даже в ручную таблица с 2 ошибками :-)


$mas=array();
$mas[]=array(\'firma\'=>9,\'tovar\'=>7,\'kolvo\'=>2.00);
$mas[]=array(\'firma\'=>10,\'tovar\'=>108,\'kolvo\'=>1.00);
$mas[]=array(\'firma\'=>10,\'tovar\'=>119,\'kolvo\'=>5.00);
$mas[]=array(\'firma\'=>10,\'tovar\'=>82,\'kolvo\'=>4.00);
$mas[]=array(\'firma\'=>14,\'tovar\'=>24,\'kolvo\'=>5.00);
$mas[]=array(\'firma\'=>14,\'tovar\'=>108,\'kolvo\'=>1.00);
.....

$mas2=array(array(0=>\'__\'));
$mas3=array(\'s\');
$max=0;
foreach($mas as $val){
if(!isset($mas2[0][$val[\'firma\']]))
$mas2[0][$val[\'firma\']]=$val[\'firma\'];
if(!isset($mas3[$val[\'tovar\']]))
$mas3[$val[\'tovar\']]=$val[\'kolvo\'];
else
$mas3[$val[\'tovar\']]+=$val[\'kolvo\'];
$mas2[$val[\'tovar\']][0]=$val[\'tovar\']; 
        $mas2[$val[\'tovar\']][$val[\'firma\']]=$val[\'kolvo\'];
if(($l=strlen($val[\'tovar\']))>$max) $max=$l;
}

ksort($mas2[0]);
$s=\'<table>\';
foreach($mas2 as $key => $val){
$s.=\'<tr>\';
foreach($mas2[0] as $key2 => $val2){
if(($key2==0) && ($key!=0))
$val[$key2]=str_pad($val[$key2], $max, \'0\', STR_PAD_LEFT);
$s.=\'<td>\'.(isset($val[$key2])?$val[$key2]:\' \').\'</td>\';
}

$s.=\'<td>\'.$mas3[$key].\'</td></tr>\';
}
$s.=\'</table>\';
echo $s;

Altaxar:
html_coder
Даже если и в базе данных, то подобное будет весьма интересно сделать к примеру на MySQL

Навигация

[0] Главная страница сообщений

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 
Перейти к полной версии