Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » PHP. Как отсортировать многомерный массив

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

DarkSmoke



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Как отсортировать многомерный массив?
Приоритет сортировки должен получится такой: ключ №10 в алфавитном порядке, а уже внутри алфавитного порядка по ключу №1, от меньшего к большему.
Пример:

Цитата:
ААА => 56755549
ААА => 56755564
БББ => 56755531
ГГГ => 56755523

 

Код:
 
Array
(
    [0] => Array
        (
            [0] => 383
            [1] => 56755564
            [2] =>  
            [3] => 46070+419+49450
            [4] => Придн
            [5] => 47660
            [6] => ДНЕПРОРУДНАЯ
            [7] => 06.08.13 13:30
            [8] => ОТОТ
            [9] => 0
            [10] => ААА
        )
 
    [2] => Array
        (
            [0] => 327
            [1] => 56755549
            [2] =>  
            [3] => 46000+126+49450
            [4] => Придн
            [5] => 47660
            [6] => ДНЕПРОРУДНАЯ
            [7] => 02.10.12 14:00
            [8] => ОТОТ
            [9] => 0
            [10] => ААА
        )
 
    [3] => Array
        (
            [0] => 250
            [1] => 56755531
            [2] => 2038
            [3] => 37000+145+45000
            [4] => Придн
            [5] => 45000
            [6] => НИЖНЕДН-УЗЕЛ
            [7] => 20.08.13 13:10
            [8] => РАСФ
            [9] => 0
            [10] => БББ
   )
 
    [4] => Array
        (
            [0] => 431
            [1] => 56755523
            [2] =>  
            [3] => 45000+308+49450
            [4] => Придн
            [5] => 47660
            [6] => ДНЕПРОРУДНАЯ
            [7] => 20.08.13 07:30
            [8] => ОТОТ
            [9] => 0
            [10] => ГГГ
    )
....
 


----------
Абонентское обслуживание и ремонт компьютеров в Днепропетровске

Всего записей: 962 | Зарегистр. 08-10-2005 | Отправлено: 22:56 20-08-2013 | Исправлено: DarkSmoke, 22:57 20-08-2013
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DarkSmoke
используйте  
www.php.net/uksort
либо, скорее всего,  
www.php.net/usort

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 23:16 20-08-2013 | Исправлено: Cheery, 23:17 20-08-2013
DarkSmoke



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Как то сложно для понимания. Не могу понять как ее использовать в моем случае смотрю на usort

Всего записей: 962 | Зарегистр. 08-10-2005 | Отправлено: 18:57 21-08-2013 | Исправлено: DarkSmoke, 18:58 21-08-2013
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DarkSmoke

Цитата:
Как то сложно для понимания

изучайте, там есть примеры.
функция будет получать 2 элемента первого уровня массива, в этой своей функции проверяете условия
Цитата:
ключ №10 в алфавитном порядке, а уже внутри алфавитного порядка по ключу №1, от меньшего к большем
и возвращаете либо 1, либо -1, либо 0 - показывая что больше, что меньше, а что равно

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 18:59 21-08-2013
DarkSmoke



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Ну не понимаю я.  
Вот так получается у меня сортировать по одному элементу

Код:
 
    function cmp($a, $b)
    {
        return strcmp($a[1], $b[1]);
    }
    
    usort($ready, "cmp");
 

А вот по двум не как не могу.
 
ТЗ немного не правильно написал.
Надо внутри одной группы (ААА, БББ, ГГГ) отсортировать номера от меньшего к большему.

Всего записей: 962 | Зарегистр. 08-10-2005 | Отправлено: 22:45 21-08-2013
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DarkSmoke

Цитата:
Ну не понимаю я.  

Ну тогда не беритесь за это вообще - не ваше оно, нет "нюха", иначе бы давно уже понимали за тот период, что вы тут спрашиваете. Ведь вопросы на очень простом уровне.
 

Код:
function cmp($a, $b)  
{  
  if ($a[10] > $b[10])
    return 1;
  elseif ($a[10] < $b[10])
    return -1;
  if ($a[0] == $b[0])  
    return 0;
  return ($a[0] < $b[0]) ? -1 : 1;
}  
 
$ready = array(
    array  
        (  
            '0' => 383,
            '10' => 'ААА'
        ),  
    array  
        (  
            '0' => 327,
            '10' => 'ААА'
        ),  
    array  
        (  
            '0' => 250,
            '10' => 'БББ'
        ),  
    array  
        (  
            '0' => 431,
            '10' => 'ГГГ'
        ),  
    array  
        (  
            '0' => 383,
            '10' => 'ААА'
        ),  
);
usort($ready, "cmp");  
var_dump($ready);


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 22:57 21-08-2013 | Исправлено: Cheery, 22:57 21-08-2013
DarkSmoke



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
К сожалению не могу бросить, я семью и детей кормлю.
Да, может вопросы и элементарные, но именно ими я зарабатываю на жизнь.
Я Вам очень благодарен, что вы мне помогаете.
Спасибо Cheery
 
P.S. Не часто я программирую. Я системный администратор
 

Всего записей: 962 | Зарегистр. 08-10-2005 | Отправлено: 23:35 21-08-2013
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Интернет » Web-программирование » PHP. Как отсортировать многомерный массив


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru