Сортировать массив по указанным идентификаторам?

0

У меня есть следующий массив, который указывает порядок сортировки массива DATA:

 $PARENT_ID_ORDER = array(1, 3, 2); 

Здесь массив DATA, содержащий ключ PARENT_ID, я хочу сортировать по ключу PARENT_ID, используя мой PARENT_ID_ORDER:

 $DATA = array (
     array (
        'PARENT_ID' => 2;
     ),
     array (
        'PARENT_ID' => 2;
     ),
     array (
        'PARENT_ID' => 1;
     ),
     array (
        'PARENT_ID' => 3;
     ),
     array (
        'PARENT_ID' => 1;
     ),
     array (
        'PARENT_ID' => 2;
     ),
     array (
        'PARENT_ID' => 2;
     )
 );

Ожидаемый результат:

 array(
        [0] => Element Object
            (
                [PARENT_ID] => 1,
            ),
        [1] => Element Object
            (
                [PARENT_ID] => 1,
            ),
        [2] => Element Object
            (
                [PARENT_ID] => 3,
            ),
        [3] => Element Object
            (
                [PARENT_ID] => 2,
            ),
        [4] => Element Object
            (
                [PARENT_ID] => 2,
            ),
        [5] => Element Object
            (
                [PARENT_ID] => 2,
            ),
        [6] => Element Object
            (
                [PARENT_ID] => 2,
            )
 );

Как я могу предоставить массив заказов для сортировки, чтобы он сортировался таким образом? Благодарю!

Теги:
sorting

1 ответ

1

Я думаю, вы ищете это http://php.net/manual/en/function.usort.php. Вы можете использовать это вместе с бинарным поиском или встроенным array_search, если массив мал

  • 1
    Или в качестве альтернативы двоичному поиску / array_search, array_flip массив $ PARENT_ID_ORDER, а затем индексировать его и сравнивать значения.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню