2015-10-27 2 views
2

У меня есть массив, как этоткак отсортировать массив в php на основе его имени?

Array 
(
    [bms] => Array 
     (
      [0] => 123456_bms_for__on__(10-06-2015_18-57).pdf 
     ) 

    [fr] => Array 
     (
      [0] => 123456_fr_on_09-21-2015_(09-22-2015_11-46).pdf 
     ) 

    [pcm] => Array 
     (
      [0] => 123456_pcm_for_vignesh_on__(10-12-2015_12-30).pdf 
     ) 

    [fds] => Array 
     (
      [0] => 123456_fds_ext_for__on__(08-25-2015_10-23).pdf 
     ) 

    [dr] => Array 
     (
      [0] => 123456_dr_for__on___(10-23-2015_13-06).pdf 
     ) 

) 

И я хочу заказать этот массив в (BMS, д-р, FDS, РСМ, пт) заказ

Array 
(
    [bms] => Array 
     (
      [0] => 123456_bms_for__on__(10-06-2015_18-57).pdf 
     ) 
    [dr] => Array 
     (
      [0] => 123456_dr_for__on___(10-23-2015_13-06).pdf 
     ) 
    [fds] => Array 
     (
      [0] => 123456_fds_ext_for__on__(08-25-2015_10-23).pdf 
     ) 
    [pcm] => Array 
     (
      [0] => 123456_pcm_for_vignesh_on__(10-12-2015_12-30).pdf 
     ) 

    [fr] => Array 
     (
      [0] => 123456_fr_on_09-21-2015_(09-22-2015_11-46).pdf 
     ) 
) 

Пожалуйста, помогите мне разобраться в массив и помочь мне достичь массива в новом порядке Как организовать массив на основе его значения ключа

+0

Просто используйте 'ksort' –

+0

использовать ksort() для получения идеальной – siddhesh

+0

не в алфавитном порядке .... расположит в соответствии с данного массива –

ответ

2

Вы можете использовать uksort вроде как

$pos = ['bms', 'dr', 'fds', 'pcm', 'fr']; 
uksort($arr, function ($a, $b) use ($pos) { 
    foreach ($pos as $value) { 
     if ($value == $a) { 
      return 0; 
      break; 
     } 
     if ($value == $b) { 
      return 1; 
      break; 
     } 
    } 
}); 

Demo

2

Вы можете использовать uksort PHP функцию.

uksort() сортируют ключи массива с помощью предоставленного пользователя функции сравнения. Если массив, который вы хотите отсортировать, нужно отсортировать по некоторым нетривиальным критериям, вы должны использовать эту функцию.

$sortOrder = array("bms", "dr", "fds", "pcm", "fr"); 

uksort($yourArray, function($a, $b) use ($sortOrder) { 
    return array_search($a, $sortOrder) - array_search($b, $sortOrder); 
}); 

Работа IDEOne или eval.in демки.

+1

Даже короче, без 'global' :) –

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