Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP
Войти
Регистрация
Восстановить пароль
 
Ukkas
152 / 125 / 39
Регистрация: 02.05.2012
Сообщений: 573
1

Хитрая сортировка многомерного массива

19.06.2014, 12:16. Просмотров 275. Ответов 1
Метки нет (Все метки)

Добрый день. У меня есть массив children, следующей структуры:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Array
(
    [2] => Array
        (
            [object] => grade_item Object
                (
                    [id] => 738
                    [sectionorder] => 1
                )
        )
 
    [3] => Array
        (
            [object] => grade_item Object
                (
                    [id] => 739
                    [sectionorder] => 2
                )
        )
 
    [4] => Array
        (
            [object] => grade_item Object
                (
                    [id] => 740
                    [sectionorder] => 2
                )
        )
...
    [115] => Array 
        ( 
            [object] => grade_item Object 
                ( 
                    [id] => 1512
                    [sectionorder] => 1 
                ) 
        ) 
    )
Изначально его надо было отсортировать по полю sectionorder, я это решила таким способом:
PHP
1
2
3
4
5
6
7
if (isset($children)){
            usort($children, function($a,$b){
                if (isset($a['object']->sectionorder) && isset($b['object']->sectionorder)){
                    return ($a['object']->sectionorder-$b['object']->sectionorder);
                }
            });
        }
Но теперь еще добавилась необходимость сортировать внутри sectionorder согласно данным из еще одного многомерного массива Section_Sequence
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Array
(
    [1] => Array
        (
            [0] => 738
            [1] => 1512
        )
 
    [2] => Array
        (
            [0] => 739
            [1] => 740
        )
)
т.е. первые ключи тут равны sectionorder, а поля внутри array (например [0] => 738 [1] => 1512) - это порядок сортировки массива children по id. То есть в результате мне надо получить массив children в таком виде:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Array
(
    [2] => Array
        (
            [object] => grade_item Object
                (
                    [id] => 738
                    [sectionorder] => 1
                )
        )
        
    [115] => Array 
        ( 
            [object] => grade_item Object 
                ( 
                    [id] => 1512
                    [sectionorder] => 1 
                ) 
        ) 
    
    [3] => Array
        (
            [object] => grade_item Object
                (
                    [id] => 739
                    [sectionorder] => 2
                )
        )
 
    [4] => Array
        (
            [object] => grade_item Object
                (
                    [id] => 740
                    [sectionorder] => 2
                )
        )
)
Можно ли эту сортировку реализовать одной функцией?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.06.2014, 12:16
Ответы с готовыми решениями:

Сортировка многомерного массива
<?php $array = $this->administration->select_category(); if($array) { echo...

Сортировка многомерного значения по суб-значению
Есть следующий многомерный массив: array (size=7) 0 => array...

Сложная модификация многомерного массива
Всем привет! Ребят, есть тут реально умные люди? :) Помогите пожалуйста решить...

Получить ключ элемента из многомерного массива
Есть многомерный массив такого вида: Array ( => Array ( => 140 =>...

Задачка с массивами: новые одномерные массивы из 1 многомерного массива
Здравствуйте, помогите пожалуйста! Нужно более простое решение чем было :) ...

1
crautcher
2019 / 1991 / 463
Регистрация: 27.05.2011
Сообщений: 6,837
19.06.2014, 15:25 2
Самое простое при создании children, таже составить карту: к какому индексу children, относится какой айди
PHP
1
$children_map[ $element -> id ] = $i; // i  == индекс children
Если у вас будет вспомогательный массив, то все просто, идете по Section_Sequence , выбираете айди, из айди узнаете через $children_map номер элемента массива
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.06.2014, 15:25

Сортировка массива
Помогите отсортировать массив. нужна сортировка по от наибольшего значения ...

Сортировка массива
Чет не пойму как сделать без цикла вот такую вещ. Есть массив ...

сортировка массива
есть массив $array = json_decode('',true); как отсортировать данный...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru