2010-06-23 7 views
0

Рассмотрим следующий массив:Сортировка многомерного массива по последовательности другого массива

$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')); 

Любая идея, как это будет достигнуто?

ответ

2
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); 
+0

Отлично! Он работает точно так, как я хотел! Огромное спасибо! – Tony

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