4 / 4 / 5
Регистрация: 03.11.2013
Сообщений: 108
1

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

22.09.2016, 06:40. Показов 11550. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
PHP
1
2
3
4
5
6
7
8
9
10
11
$array = array(
 'a1' => array('id'=>'1', 'age'=>'16', 'gender'=>'m', 'login'=>'Вася'), 
'a2' => array('id'=>'2', 'age'=>'18', 'gender'=>'m', 'login'=>'Петя'),
'a3' => array('id'=>'3', 'age'=>'20', 'gender'=>'g', 'login'=>'Катя'), 
'a4' => array('id'=>'4', 'age'=>'20', 'gender'=>'m', 'login'=>'Стас'), 
'a5' => array('id'=>'5', 'age'=>'12', 'gender'=>'g', 'login'=>'Маша'), 
'a6' => array('id'=>'6', 'age'=>'44', 'gender'=>'g', 'login'=>'Галя'), 
'a7' => array('id'=>'7', 'age'=>'45', 'gender'=>'m', 'login'=>'Макс'), 
'a8' => array('id'=>'8', 'age'=>'20', 'gender'=>'m', 'login'=>'Илья'), 
'a9' => array('id'=>'9', 'age'=>'20', 'gender'=>'g', 'login'=>'Даша'),
 );
Отсортировать login по полю age в порядке возрастания возраста Прошу помощи
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.09.2016, 06:40
Ответы с готовыми решениями:

Сортировка многомерного массива
Есть массив, собирается в цикле: $twArray = 15; $twArray = 'имя'; $twArray = 8; $twArray =...

сортировка многомерного массива
как отсортировать многомерный массив по одному из столбцов? попробовал встроенные функции, не...

сортировка многомерного массива
подскажите пожалуйста как отсортировать многомерный массив по одному из критериев что бы все...

Сортировка многомерного массива.
Сортирую массив, только теперь мне не понятно как результаты сортировки вывести в браузер....

4
Эксперт PHP
5753 / 4133 / 1507
Регистрация: 06.01.2011
Сообщений: 11,276
22.09.2016, 07:17 2
Лучший ответ Сообщение было отмечено Kerry_Jr как решение

Решение

PHP
1
2
3
4
5
6
7
8
9
10
11
12
# Работает в PHP 7
usort($array, function($a, $b){
    return $a['age'] <=> $b['age'];
});
 
# Работает в старых версиях
usort($array, function($a, $b){
    if($a['age'] === $b['age'])
        return 0;
        
    return $a['age'] > $b['age'] ? 1 : -1;
});
Добавлено через 2 минуты
Если нужно в обратном порядке -- поменяйте в первом варианте (для PHP 7) $a и $b местами в условии, а во втором (для старых версий) -- -1 и 1.
1
4 / 4 / 5
Регистрация: 03.11.2013
Сообщений: 108
22.09.2016, 19:33  [ТС] 3
Прошу прощения никак. Немного ещё подробнее
0
Эксперт PHP
5753 / 4133 / 1507
Регистрация: 06.01.2011
Сообщений: 11,276
23.09.2016, 06:38 4
Лучший ответ Сообщение было отмечено Taatshi как решение

Решение

Если старая версия PHP:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
    $array = array(
        'a1' => array('id'=>'1', 'age'=>'16', 'gender'=>'m', 'login'=>'Вася'), 
        'a2' => array('id'=>'2', 'age'=>'18', 'gender'=>'m', 'login'=>'Петя'),
        'a3' => array('id'=>'3', 'age'=>'20', 'gender'=>'g', 'login'=>'Катя'), 
        'a4' => array('id'=>'4', 'age'=>'20', 'gender'=>'m', 'login'=>'Стас'), 
        'a5' => array('id'=>'5', 'age'=>'12', 'gender'=>'g', 'login'=>'Маша'), 
        'a6' => array('id'=>'6', 'age'=>'44', 'gender'=>'g', 'login'=>'Галя'), 
        'a7' => array('id'=>'7', 'age'=>'45', 'gender'=>'m', 'login'=>'Макс'), 
        'a8' => array('id'=>'8', 'age'=>'20', 'gender'=>'m', 'login'=>'Илья'), 
        'a9' => array('id'=>'9', 'age'=>'20', 'gender'=>'g', 'login'=>'Даша'),
    );
 
    # Работает в старых версиях
    usort($array, function($a, $b){
        if($a['age'] === $b['age'])
            return 0;
            
        return $a['age'] > $b['age'] ? 1 : -1;
    });
    
    var_dump($array);
Если PHP 7:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
    $array = array(
        'a1' => array('id'=>'1', 'age'=>'16', 'gender'=>'m', 'login'=>'Вася'), 
        'a2' => array('id'=>'2', 'age'=>'18', 'gender'=>'m', 'login'=>'Петя'),
        'a3' => array('id'=>'3', 'age'=>'20', 'gender'=>'g', 'login'=>'Катя'), 
        'a4' => array('id'=>'4', 'age'=>'20', 'gender'=>'m', 'login'=>'Стас'), 
        'a5' => array('id'=>'5', 'age'=>'12', 'gender'=>'g', 'login'=>'Маша'), 
        'a6' => array('id'=>'6', 'age'=>'44', 'gender'=>'g', 'login'=>'Галя'), 
        'a7' => array('id'=>'7', 'age'=>'45', 'gender'=>'m', 'login'=>'Макс'), 
        'a8' => array('id'=>'8', 'age'=>'20', 'gender'=>'m', 'login'=>'Илья'), 
        'a9' => array('id'=>'9', 'age'=>'20', 'gender'=>'g', 'login'=>'Даша'),
    );
 
    usort($array, function($a, $b){
        return $a['age'] <=> $b['age'];
    });
    
    var_dump($array);
3
4 / 4 / 5
Регистрация: 03.11.2013
Сообщений: 108
23.09.2016, 18:37  [ТС] 5
Огромное спасибо
0
23.09.2016, 18:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.09.2016, 18:37
Помогаю со студенческими работами здесь

Сортировка многомерного массива
Здравствуйте, есть массив, который выглядит так: $arr= 1; $arr= 24567; $arr= 35679; // $arr=...

Сортировка многомерного массива
Есть многомерный массив вида array( array(=&gt;1 =&gt;text =&gt;1) array(=&gt;1 =&gt;text =&gt;1)...

Сортировка многомерного ассоциативного массива
Доброго времени, уважаемые) есть CSV-файл, из которого получаем данные и засовываем в массив: ...

Сортировка многомерного ассоциативного массива
Добрый вечер, смотрел похожие темы, но что-то все никак не могу подстроить под свой случай...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru