Сортировка многомерного массива по последовательности другого массива - PullRequest
0 голосов
/ 24 июня 2010

Рассмотрим следующий массив:

$main_array = array();
$main_array[0] = array('location'=> array('France', 'Germany'), 'random_number'=> array('6520'));
$main_array[1] = array('location'=> array('Italy', 'Switzerland'), 'random_number'=> array('3245'));
$main_array[2] = array('location'=> array('Portugal', 'Spain'), 'random_number'=> array('9981'));
$main_array[3] = array('location'=> array('Turkey', 'Greece'), 'random_number'=> array('1098'));

Я хочу отсортировать этот массив по значению ключа random_number[0] и на основе последовательности следующего массива:

$sequenced = array('3245','1098','6520','9981');

Итак, окончательный отсортированный массив будет выглядеть так:

$final_array = array();
$final_array[0] = array('location'=> array('Italy', 'Switzerland'), 'random_number'=> array('3245'));
$final_array[1] = array('location'=> array('Turkey', 'Greece'), 'random_number'=> array('1098'));
$final_array[2] = array('location'=> array('France', 'Germany'), 'random_number'=> array('6520'));
$final_array[3] = array('location'=> array('Portugal', 'Spain'), 'random_number'=> array('9981'));

Есть идеи, как этого достичь?

1 Ответ

2 голосов
/ 24 июня 2010
function sorter($array, $sequence){
  $tmp = array();
  foreach($sequence as $s){
    foreach($array as $a){
      if($a[random_number][0] == $s){ 
        array_push($tmp, $a);
        break;
      }   
    }   
  }
  return $tmp;
}

$final_array = sorter($main_array, $sequenced);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...