Программирование > 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
Навигация
Перейти к полной версии