Форум программистов, компьютерный форум, киберфорум
Наши страницы

PHP

Войти
Регистрация
Восстановить пароль
 
Ukkas
152 / 125 / 35
Регистрация: 02.05.2012
Сообщений: 573
#1

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

19.06.2014, 12:16. Просмотров 251. Ответов 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):

сортировка многомерного массива - PHP
<?php $array = $this->administration->select_category(); if($array) { echo '<ul class="category">'; foreach($array as $item) { ...

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

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

Задачка с массивами: новые одномерные массивы из 1 многомерного массива - PHP
Здравствуйте, помогите пожалуйста! Нужно более простое решение чем было :) Есть вот такой массив: $array = array ( '1'=>'1', ...

сортировка массива - PHP
есть массив $array = json_decode('',true); как отсортировать данный массив по popular по возврастанию?

Сортировка массива - PHP
Чет не пойму как сделать без цикла вот такую вещ. Есть массив $arr=array('one','two','qwerty','asdfg'); Нужно чтобы стало вот...

1
crautcher
2014 / 1986 / 175
Регистрация: 27.05.2011
Сообщений: 6,832
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
Привет! Вот еще темы с ответами:

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

Поразрадная сортировка массива - PHP
Здравствуйте уважаемые админы) Возник один вопрос, на который во всем интрернете сложно найти ответ, создал программу для сортировки...

Сортировка массива array_multisort - PHP
Здравствуйте! Делаю список ТОП из массива Имеется массив в котором находятся числовые значения, иногда они повторяются Нужно...

Сортировка ключей массива - PHP
Подскажите пожалуйста, как можно из массива => ВОПРОС - ... => ОТВЕТ - .... => ВОПРОС - ... => ОТВЕТ - .... ...


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

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

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