Автор Тема: Обработка данных  (Прочитано 3373 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Ray007

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 3
  • +0/-0
  • 0
    • Просмотр профиля
    • http://r7.org.ru
Обработка данных
« : 24 Октября 2007, 21:30:03 »
Подскажите элегантный способ обработки вот таких данных:


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:
« Последнее редактирование: 25 Октября 2007, 09:41:33 от Ray007 »

Оффлайн html_coder

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 427
  • +0/-0
  • 0
    • Просмотр профиля
Обработка данных
« Ответ #1 : 25 Октября 2007, 12:06:12 »
Ray007, к сожалению нет ни слова о том, где храняться эти данные...

Оффлайн Altaxar

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 222
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.moroseac.ru/
Обработка данных
« Ответ #2 : 25 Октября 2007, 13:11:38 »
Да можно, и не сложно, а вот у тебя даже в ручную таблица с 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

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 222
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.moroseac.ru/
Обработка данных
« Ответ #3 : 25 Октября 2007, 13:15:24 »
html_coder
Даже если и в базе данных, то подобное будет весьма интересно сделать к примеру на MySQL
Не все является тем чем кажется.

 

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