Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сложная сортировка массива 
V
    Опции темы
Guedda
Дата 22.10.2007, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: 13
Всего: 78



Есть массив приблизительно такой структуры:
Цитата

Array
(
    [0] => stdClass Object
        (
            [id] => 27
            [parentid] => 13
            [price] => 3143
        )

    [1] => stdClass Object
        (
            [uid] => 54
            [parentuid] => 13
            [price] => 2600
        )

    [2] => stdClass Object
        (
            [id] => 27
            [parentid] => 13
            [price] => 3143
        )

    [3] => stdClass Object
        (
            [id] => 55
            [parentid] => 17
            [price] => 600
        )

    [4] => stdClass Object
        (
            [id] => 54
            [parentid] => 17
            [price] => 2600
        )
)

Так вот мне его надо отсортировать сначала по parentid, а потом по price.

Заранее благодарен за ответ.


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
Всемогущий
Дата 22.10.2007, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 440
Регистрация: 25.6.2006
Где: Челябинск

Репутация: 5
Всего: 13



легче сделать это на уровне бд


--------------------
Цитата(smartov @  16.1.2007,  13:26 Найти цитируемый пост)
Видел я PHP код, который пишут наСильники, никогда на php не писавшие  :D  То еще зрелище. Все пытаются сделать руками и через ж (как в С привыкли). Все пытаются память освобождать итд итп. 
PM MAIL ICQ   Вверх
Guedda
Дата 22.10.2007, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: 13
Всего: 78



Цитата(Всемогущий @  22.10.2007,  19:02 Найти цитируемый пост)
легче сделать это на уровне бд 

Зачем писать глупости? Я попросил одно, а ты пишешь совершенно другое. Подумай, прежде чем написать.


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
Wolf1994
Дата 22.10.2007, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 5.10.2004

Репутация: 7
Всего: 29



Код

function complex_sort ($your_ar)
{
 foreach ($your_ar as $k=>$v)
  $t_ar [$v ["id"]]=$v ["parentid"].".".$v ["price"];

  arsort ($t_ar, SORT_NUMERIC);

  reset ($t_ar);

 foreach ($t_ar as $k=>$v)
  $t_ar2 []=$your_ar [$k];

 return $t_ar2;
}


Передайте функции complex_sort Ваш массив и она вернёт его отсортированным соответвенно Вашим критериям.

P.S. Не тестировал.
PM MAIL WWW   Вверх
sw04
Дата 22.10.2007, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 372
Регистрация: 22.1.2007
Где: Ufa

Репутация: нет
Всего: 18



выкладывали давненько пример array_multisort_column 
в поиске нашел буквально на прошлой неделе.


--------------------
<удалено администрацией>
PM   Вверх
SelenIT
Дата 22.10.2007, 22:47 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 32
Всего: 401



А обычный usort разве не подойдет?
Код

function cmp($a,$b) {
     // в первую очередь сравниваем по parentid
     if ($a->parentid != $b->parentid) return $a->parentid - $b->parentid;
     // а если parentid-ы равны - учитываем price
     else return $a->price - $b->price;
}

usort($array, "cmp");



--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0501 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.