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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сортировка массива, Сортировка массива по нескольким кючам 
V
    Опции темы
burg
Дата 8.9.2008, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Есть массив

Код

Array 
( 
    [0] => Array 
        ( 
            [ID] => 256 
            [ParentID] => 101 
            [IP] => 127.0.0.1 
            [CommentID] => 2 
            [Comment] => Тест1 
            [newtime] => 1219251652 
        ) 

    [1] => Array 
        ( 
            [ID] => 256 
            [ParentID] => 101 
            [IP] => 127.0.0.1 
            [CommentID] => 1 
            [Comment] => Тест1 
            [newtime] => 1219251640 
        ) 

    [2] => Array 
        ( 
            [ID] => 256 
            [ParentID] => 101 
            [IP] => 127.0.0.1 
            [CommentID] => 2 
            [Comment] => Тест1 
            [newtime] => 1219251585 
        ) 

    [3] => Array 
        ( 
            [ID] => 256 
            [ParentID] => 101 
            [IP] => 127.0.0.1 
            [CommentID] => 4 
            [Comment] => Тест1 
            [newtime] => 1219251094 
        ) 

    [4] => Array 
        ( 
            [ID] => 256 
            [ParentID] => 101 
            [IP] => 127.0.0.1 
            [CommentID] => 6 
            [Comment] => Тест1 
            [newtime] => 1219250990 
        ) 

    [5] => Array 
        ( 
            [ID] => 248 
            [ParentID] => 101 
            [IP] => 127.0.0.1 
            [CommentID] => 8 
            [Comment] => Новый Тест 
            [newtime] => 1219251585 
        ) 

    [6] => Array 
        ( 
            [ID] => 248 
            [ParentID] => 101 
            [IP] => 127.0.0.1 
            [CommentID] => 3 
            [Comment] => Новый Тест 
            [newtime] => 1219251103 
        ) 

    [7] => Array 
        ( 
            [ID] => 248 
            [ParentID] => 101 
            [IP] => 127.0.0.1 
            [CommentID] => 7 
            [Comment] => Новый Тест 
            [newtime] => 1219250990 
        ) 

    [8] => Array 
        ( 
            [ID] => 167 
            [ParentID] => 101 
            [IP] => 127.0.0.1 
            [CommentID] => 3 
            [Comment] => Новый х3 
            [newtime] => 1219251859 
        ) 

    [9] => Array 
        ( 
            [ID] => 209 
            [ParentID] => 248 
            [IP] => 127.0.0.1 
            [CommentID] => 4 
            [Comment] => Без теста 
            [newtime] => 1220726671 
        ) 

)



Возможно, ли произвести сортировку этого массива по его ключам ParentID, ID и newtime?

Чтобы получился вот такой массив:

Код

Array 
( 
    [8] => Array 
        ( 
            [ID] => 167 
            [ParentID] => 101 
            [IP] => 127.0.0.1 
            [CommentID] => 3 
            [Comment] => Новый х3 
            [newtime] => 1219251859 
        ) 
         
    [7] => Array 
        ( 
            [ID] => 248 
            [ParentID] => 101 
            [IP] => 127.0.0.1 
            [CommentID] => 7 
            [Comment] => Новый Тест 
            [newtime] => 1219250990 
        ) 
         
    [6] => Array 
        ( 
            [ID] => 248 
            [ParentID] => 101 
            [IP] => 127.0.0.1 
            [CommentID] => 3 
            [Comment] => Новый Тест 
            [newtime] => 1219251103 
        ) 
         
    [5] => Array 
        ( 
            [ID] => 248 
            [ParentID] => 101 
            [IP] => 127.0.0.1 
            [CommentID] => 8 
            [Comment] => Новый Тест 
            [newtime] => 1219251585 
        ) 

    [4] => Array 
        ( 
            [ID] => 256 
            [ParentID] => 101 
            [IP] => 127.0.0.1 
            [CommentID] => 6 
            [Comment] => Тест1 
            [newtime] => 1219250990 
        ) 

    [3] => Array 
        ( 
            [ID] => 256 
            [ParentID] => 101 
            [IP] => 127.0.0.1 
            [CommentID] => 4 
            [Comment] => Тест1 
            [newtime] => 1219251094 
        ) 

    [2] => Array 
        ( 
            [ID] => 256 
            [ParentID] => 101 
            [IP] => 127.0.0.1 
            [CommentID] => 2 
            [Comment] => Тест1 
            [newtime] => 1219251585 
        ) 

    [1] => Array 
        ( 
            [ID] => 256 
            [ParentID] => 101 
            [IP] => 127.0.0.1 
            [CommentID] => 1 
            [Comment] => Тест1 
            [newtime] => 1219251640 
        ) 
         
    [0] => Array 
        ( 
            [ID] => 256 
            [ParentID] => 101 
            [IP] => 127.0.0.1 
            [CommentID] => 2 
            [Comment] => Тест1 
            [newtime] => 1219251652 
        ) 

    [9] => Array 
        ( 
            [ID] => 209 
            [ParentID] => 248 
            [IP] => 127.0.0.1 
            [CommentID] => 4 
            [Comment] => Без теста 
            [newtime] => 1220726671 
        ) 

)

PM MAIL   Вверх
bars80080
Дата 8.9.2008, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



можно, если не знаете, как работает функция usort(), то следует изучить и попробовать: http://php.ru/manual/function.usort.html

если знаете, то надо всего лишь достроить пользовательскую функцию на обработку дополнительных параметров
PM MAIL WWW   Вверх
burg
Дата 8.9.2008, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



bars80080,  так вот как ее достроить?
даже понятия не имею как к ней подобраться.
PM MAIL   Вверх
teroni
Дата 8.9.2008, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 8
Всего: 22



См. http://ua.php.net/array_multisort - там в комментах всё разжёвано.
PM MAIL   Вверх
burg
Дата 8.9.2008, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



teroni, с английским не очень :(
PM MAIL   Вверх
bars80080
Дата 8.9.2008, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



достраивается также как и первая часть
Код

function user_sort($x, $y) {
    if($x['parent_id'] < $y['parent_id']) return -1;
    elseif($x['parent_id'] > $y['parent_id']) return 1;
    else { 
        if($x['id'] < $y['id']) return -1;
        elseif($x['id'] > $y['id']) return 1;
        else return 0; }}
и далее, по этапам
PM MAIL WWW   Вверх
burg
Дата 8.9.2008, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



и что-то я не понял либо не так работает smile
PM MAIL   Вверх
bars80080
Дата 8.9.2008, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



а как вы делаете? мы ж понятия не имеем что у вас там не получается

есть массив $mv = array( ... );
сортируем его:
usot($mv, 'user_sort');

где user_sort() - ваша функция сортировки (пример я привёл выше)
PM MAIL WWW   Вверх
burg
Дата 8.9.2008, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Все спасибо за пример.
Разобрался и дописал до времени.
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.0546 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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