2014-11-09 2 views
0

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

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

Вот массив данных, который содержит ключ 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, 
      ) 
); 

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

+0

См. Этот дубликат: http://stackoverflow.com/questions/11145393/sorting-a-php-array-of-arrays-by- custom-order – GBD

ответ

1

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

+1

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

Смежные вопросы