2010-06-23 80 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 2010-06-23 20:22:29