Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Сортировка массива ассоциативных массивов по значению поля в ассоциативных массивах / 8 сообщений из 8, страница 1 из 1
26.03.2014, 15:34
    #38597077
Cyrax_02
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка массива ассоциативных массивов по значению поля в ассоциативных массивах
Пример:
array [id = 4; name = "nnn"; num = 5]
array [id = 8; name = "asc"; num = 7]
array [id = 2; name = "dfg"; num = 2]
array [id = 9; name = "gux"; num = 1]
array [id = 5; name = "ruu"; num = 3]

Необходимо получить:
array [id = 9; name = "gux"; num = 1 ]
array [id = 2; name = "dfg"; num = 2 ]
array [id = 5; name = "ruu"; num = 3 ]
array [id = 4; name = "nnn"; num = 5 ]
array [id = 8; name = "asc"; num = 7 ]

Сортировка производится по полю num.
Как это реализовать с помощью стандартных php-функций сортировки ?
И чтобы было красиво и изячно. Главное - изячно.
...
Рейтинг: 0 / 0
26.03.2014, 15:42
    #38597096
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка массива ассоциативных массивов по значению поля в ассоциативных массивах
...
Рейтинг: 0 / 0
26.03.2014, 15:42
    #38597098
Програмёр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка массива ассоциативных массивов по значению поля в ассоциативных массивах
Cyrax_02Пример:
array [id = 4; name = "nnn"; num = 5]
array [id = 8; name = "asc"; num = 7]
array [id = 2; name = "dfg"; num = 2]
array [id = 9; name = "gux"; num = 1]
array [id = 5; name = "ruu"; num = 3]

Необходимо получить:
array [id = 9; name = "gux"; num = 1 ]
array [id = 2; name = "dfg"; num = 2 ]
array [id = 5; name = "ruu"; num = 3 ]
array [id = 4; name = "nnn"; num = 5 ]
array [id = 8; name = "asc"; num = 7 ]

Сортировка производится по полю num.
Как это реализовать с помощью стандартных php-функций сортировки ?
И чтобы было красиво и изячно. Главное - изячно.

Код: php
1.
usort($arr, function($a, $b){return $a['num']<$b['num'] ? -1 : ($a['num']>$b['num'] ? 1 : 0);});
...
Рейтинг: 0 / 0
27.03.2014, 18:30
    #38598413
Cyrax_02
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка массива ассоциативных массивов по значению поля в ассоциативных массивах
Задача с небольшим подвохом. Нужно сделать так, чтобы эта функция работала с любыми значениями $numFieldName:
Код: php
1.
2.
3.
4.
5.
6.
7.
function func_sortArraysByNum(&$container, $numFieldName = 'num') {        

        usort($container, function($fields1, $fields2, $numFieldName) {
                          return (intval($fields1[$numFieldName]) > intval($fields2[$numFieldName])) ? 1:
                                ((intval($fields1[$numFieldName]) == intval($fields2[$numFieldName])) ? 0: -1); });
                                
}  // func_sortArraysByNum



Реализуемо ?
...
Рейтинг: 0 / 0
27.03.2014, 20:38
    #38598495
Програмёр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка массива ассоциативных массивов по значению поля в ассоциативных массивах
Cyrax_02,

тут примеры #3 и #4 полностью решают поставленную задачу ;)
...
Рейтинг: 0 / 0
28.03.2014, 13:27
    #38599120
Cyrax_02
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка массива ассоциативных массивов по значению поля в ассоциативных массивах
Вот так:
Код: php
1.
2.
3.
4.
5.
6.
7.
function sortArraysByNum(&$container, $numFieldName = 'num') {

        return usort($container, function($fields1, $fields2) use ($numFieldName) {
                                 return (intval($fields1['num']) > intval($fields2['num'])) ? 1:
                                       ((intval($fields1['num']) == intval($fields2['num'])) ? 0: -1); });
                                
}  // sortArraysByNum


P.S. PHP >= 5.3
...
Рейтинг: 0 / 0
28.03.2014, 13:28
    #38599122
Cyrax_02
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка массива ассоциативных массивов по значению поля в ассоциативных массивах
Вот так:
Код: php
1.
2.
3.
4.
5.
6.
7.
function sortArraysByNum(&$container, $numFieldName = 'num') {

        return usort($container, function($fields1, $fields2) use ($numFieldName) {
                                 return (intval($fields1[$numFieldName]) > intval($fields2[$numFieldName])) ? 1:
                                       ((intval($fields1[$numFieldName]) == intval($fields2[$numFieldName])) ? 0: -1); });
                                
}  // sortArraysByNum


P.S. PHP >= 5.3
...
Рейтинг: 0 / 0
28.03.2014, 13:29
    #38599123
Cyrax_02
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка массива ассоциативных массивов по значению поля в ассоциативных массивах
Единственный форум в Мире, на котором нельзя редактировать сообщения %(
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Сортировка массива ассоциативных массивов по значению поля в ассоциативных массивах / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]