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

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

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:
 
у тебя не получилось?
как ты пробовал?
---
откуда берутся данные?
где они хранятся?
 
хехе ;)

PHP:
$str = 'firma=9 tovar=7 kolvo=2.00';
$str = str_replace(' ', '&', $str);
parse_str($str, $data);
var_dump($data);

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

Хотя трик засчитан. ;)
 
Pigmeich
вот когда убьют - тогда и будешь оставлять ужасно умные комментарии
 
Уточняю: то, что 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

из нее надо получить такую, как я раньше показал.
Собственно, интересен не ввод данных, а способ ОБРАБОТКИ ТАБЛИЦЫ.
 
Ray007
нет никакой таблицы (с) Matrix
откуда беруться данные?
обычный текст?
 
Автор оригинала: Dovg
Ray007
нет никакой таблицы (с) Matrix
откуда беруться данные?
обычный текст?
Давай для простоты будем считать, что из текстового файла.
А выводить результаты надо будет в html, в виде таблицы.
Количество полей firma и tovar может быть произвольным.
 
Если это текстовый файл - смотри в сторону обработки строк
http://ru2.php.net/manual/ru/function.explode.php - там даже по-русски написано

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

-~{}~ 25.10.07 09:41:

Количество полей firma и tovar может быть произвольным.
Может все-таки не полей, а строк?
 
Ray007
ты хоть палец о палец настроен ударить?
 
Ray007
смотри в ассоциативные массивы и применяй конструкцию
$some['key'] += $addedValue;

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

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

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

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

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

пишется это так $DDarray[$firm][$article] += $price;
(Блин, не удержался от кода)
 
ты вообще пытался сделать это самостоятельно?
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху