Сортировка многомерного массива

Flash

Новичок
Сортировка многомерного массива

PHP:
Array(
    [56806603] => Array  // id товара
        (
            [num] => 123456789 // номер поставщика
            [brand] => Изготовитель
            [dscrrus] => Описание товара
            [ves] => 50
            [price] => Array
                (
                    [1] => Array
                        (
                            [klichka] => Поставщик 1
                            [srok] => 14
                            [srok2] => 16
                            [price] => 319000.14
                            [nal] => 
                            [nal2] => 
                        )

                    [2] => Array
                        (
                            [klichka] => Поставщик 2
                            [srok] => 14
                            [srok2] => 16
                            [price] => 618.48
                            [nal] => 
                            [nal2] => 
                        )

                    [3] => Array
                        (
                            [klichka] => Поставщик 3 
                            [srok] => 12
                            [srok2] => 50
                            [price] => 6390.3100
                            [nal] => 
                            [nal2] => 
                        )

                )

        )

    [603000000] => Array  // id товара
        (
            [num] => 900000 // номер поставщика
            [brand] => Изготовитель
            [dscrrus] => Описание товара
            [ves] => 50
            [price] => Array
                (
                    [1] => Array
                        (
                            [klichka] => Поставщик 1
                            [srok] => 14
                            [srok2] => 16
                            [price] => 319000.14
                            [nal] => 
                            [nal2] => 
                        )

                    [2] => Array
                        (
                            [klichka] => Поставщик 2
                            [srok] => 14
                            [srok2] => 16
                            [price] => 618.48
                            [nal] => 
                            [nal2] => 
                        )

                    [3] => Array
                        (
                            [klichka] => Поставщик 3 
                            [srok] => 12
                            [srok2] => 50
                            [price] => 6390.3100
                            [nal] => 
                            [nal2] => 
                        )

                )

        )

)
Подскажите как отсортировать внутри массива [id товара][price] по значению [id товара][price][price].
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Сортировать нужно при выборке из БД
 

Flash

Новичок
А если это не выборка из БД, а XML файл именно в этом виде.
 

DiMA

php.spb.ru
Команда форума
наполняешь последовательно новый массив
ключи в нем через sprintf включают все опции сортировки
ksort
готово
 

Flash

Новичок
неужели нет способа отсортировать существующий? Новый массив не чем хорошим не грозит... =(
 

dimagolov

Новичок
Flash, ты рассчитываешь что расход памяти про сортировкой встроенной ф-ей будет меньше чем при построении нового массива? или в чем проблема?

п.с. можно загонять в мускль и запрашивать оттуда уже в сортированном виде :)
 

Flash

Новичок
Автор оригинала: dimagolov
Flash, ты рассчитываешь что расход памяти про сортировкой встроенной ф-ей будет меньше чем при построении нового массива? или в чем проблема?
Ну вообще ситуация такая, что будет большая нагрузка на сервер и хотелось бы сэкономить память. Загонять постоянно в мускл, тож не вариант, так как позиций много миллионов и очень много запросов, данные разделены на нескольких серверах, потом соединяется в такой массив. Но уверен что есть какой-то не очень сложный метод.

Буду рад любому совету, заранее спасибо!
 

x-yuri

Новичок
п.с. можно загонять в мускль и запрашивать оттуда уже в сортированном виде
думаю, имелось в виду не на каждый запрос такую операцию делать, а хранить данные в mysql

данные разделены на нескольких серверах, потом соединяется в такой массив
как часто?
 

Flash

Новичок
Постоянно, пока по нескольку десятков запросов, а в развитии тысячи обращений единовременно. Не все данные в полном распоряжении, поэтому загонять всё в MySQL не обсуждается. Нужно только отсортировать.
 

x-yuri

Новичок
т.е. на каждый запрос страницы идет несколько обращений по сети?
 

dimagolov

Новичок
ну, с таким подходом к построению архитектуры это не на долго.
Не все данные в полном распоряжении, поэтому загонять всё в MySQL не обсуждается.
ерунда какая-то. если они не все в распоряжении, то и сортировать нечего. а если есть что сортировать, то то это можно сохранить в том или ином хранилище и больше не таскать по сети.
п.с. хочешь, чтобы тебе помогли - раскажи откуда данные беруться и как изменяются. иначе кроме стеба ничего не жди.
п.п.с. посмотрел на название полей. банальный анализ рынка. все замечательно в виде реляционной модели представляется, а зная какие запросы надо строить то можно денормализировать для производительности.

[offtopic]
создается впечатление что пишется новый гугл но для исполнения каждого поискового запроса в нем надо собрать индексы со всех хранилищ.
[/offtopic]
 

Flash

Новичок
Всё намного проще, просто аналитика по поставщикам и всё...
 

AmdY

Пью пиво
Команда форума
есть вещи за которые нужно не выгонять с работы, а расстреливать.
основываясь на п.п.с. от dimagolov я предполагаю второе.

Flash
наосновании чего ты предположил, что хранение и выборка в XML будет экономнее чем БД?
 

Flash

Новичок
Да я не говорю что быстрее, просто информация которая приходит по определенному запросу, в XML, может ежесекундно меняться, без моего на это участия, поэтому взять и сохранить к себе в MySQL я не могу.
 

x-yuri

Новичок
почему бы периодически эту информацию по cron'у не загонять в БД? Если будет высокая нагрузка это скорее всего прийдется сделать

-~{}~ 03.03.09 11:07:

кстати, а много информации передается? Будет ее объем увеличиваться? Будет выдаваться вся информация или только часть?
 

Flash

Новичок
Как ещё раз объяснить, что нужна оперативная информация, мне никто не даёт скачать всё что есть на серверах, делаешь запрос номера производителя получаешь ответ в XML.

P/S: Люди взгляните на топик мне нужно многомерный массив отсортировать, а не чтоб вы мне доказали что мне этого не нужно.
 

dimagolov

Новичок
Flash, а здесь принцип такой. помогать делать глупости никому не интересно. и не надо ля-ля что "может ежесекундно меняться". это же не котировки форекса у тебя? если нет, то они протухают никак не за секунду. или котировки? но котировки никто через XML не тягает при этом.
 

Flash

Новичок
Ля-ля это dimagolov пишет в комментариях, заместо того чтобы по делу что-то написать. Повторяю для особо одаренных информация может меняться ежесекундно.

И вообще посмотри как котировки передаются, они все в XML. Может ещё докажешль что XML это отстой и не нужен вовсе?
 
Сверху