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

Статус
В этой теме нельзя размещать новые ответы.

Ray007

Новичок
Обработка данных

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

PHP:
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

Получиться должна вот такая табличка:

PHP:
_____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:
 

Dovg

Продвинутый новичок
у тебя не получилось?
как ты пробовал?
---
откуда берутся данные?
где они хранятся?
 

zerkms

TDD infected
Команда форума
хехе ;)

PHP:
$str = 'firma=9 tovar=7 kolvo=2.00';
$str = str_replace(' ', '&', $str);
parse_str($str, $data);
var_dump($data);
варить до готовности ;)
 

Pigmeich

Новичок
zerkms
множественные пробелы и пробелы до и после "=", убьют код.

Хотя трик засчитан. ;)
 

Фанат

oncle terrible
Команда форума
Pigmeich
вот когда убьют - тогда и будешь оставлять ужасно умные комментарии
 

Ray007

Новичок
Уточняю: то, что firma tovar kolvo - это названия полей, а
считываются непосредственно их значения.
Т.е. на входе имеем таблицу

PHP:
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
из нее надо получить такую, как я раньше показал.
Собственно, интересен не ввод данных, а способ ОБРАБОТКИ ТАБЛИЦЫ.
 

Dovg

Продвинутый новичок
Ray007
нет никакой таблицы (с) Matrix
откуда беруться данные?
обычный текст?
 

Ray007

Новичок
Автор оригинала: Dovg
Ray007
нет никакой таблицы (с) Matrix
откуда беруться данные?
обычный текст?
Давай для простоты будем считать, что из текстового файла.
А выводить результаты надо будет в html, в виде таблицы.
Количество полей firma и tovar может быть произвольным.
 

Dovg

Продвинутый новичок
Если это текстовый файл - смотри в сторону обработки строк
http://ru2.php.net/manual/ru/function.explode.php - там даже по-русски написано

получишь массив, потом прочитай про функции для работы с массивами
http://ru2.php.net/array

-~{}~ 25.10.07 09:41:

Количество полей firma и tovar может быть произвольным.
Может все-таки не полей, а строк?
 

zerkms

TDD infected
Команда форума
Ray007
ты хоть палец о палец настроен ударить?
 

Pigmeich

Новичок
Ray007
смотри в ассоциативные массивы и применяй конструкцию
$some['key'] += $addedValue;

ну в твоём случае массив двумерный будет, а не одномерный.
 

Ray007

Новичок
Автор оригинала: Dovg
Если это текстовый файл - смотри в сторону обработки строк
http://ru2.php.net/manual/ru/function.explode.php - там даже по-русски написано
Как разобрать _одну_ строку в массив я знаю.
А мне надо массив из этих разобранных строк.

получишь массив, потом прочитай про функции для работы с массивами
http://ru2.php.net/array
Я ими делал для одномерного массива. Но тут явно все сложнее.
Как обрабатывать многомерные? Никогда с ними дела не имел,
даже не знаю, с какой стороны к ним подойти :(

Может все-таки не полей, а строк?
По полю tovar создаются строки, по полю firma - столбцы.
И каждый раз их количества могут быть разными.
Т.е. исходная таблица генерится динамически.
 

Dovg

Продвинутый новичок
Т.е. исходная таблица генерится динамически.
Исходная таблица не может генериться в более читабельном виде?

Я ими делал для одномерного массива. Но тут явно все сложнее.
точно также
--
почитай в мануле про типы данных
 

Pigmeich

Новичок
Ray007
Всё ясно. По нормальному тебе надо взять учебник по программированию и читать.

Двумерный массив - это массив массивов, то есть массив переменных являющихся массивами. Всё.

пишется это так $DDarray[$firm][$article] += $price;
(Блин, не удержался от кода)
 

Dovg

Продвинутый новичок
ты вообще пытался сделать это самостоятельно?
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху