2010-06-23 5 views
0

Tenir compte le tableau suivant:Tri un tableau multidimensionnel par la séquence d'un autre tableau

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

Je veux trier ce tableau par la valeur de random_number[0] clé et en fonction de la séquence du tableau suivant :

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

Ainsi, le tableau trié finale ressemblerait à ceci:

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

Une idée de comment cela serait réalisé?

Répondre

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

Génial! Cela fonctionne exactement comme je le voulais! Merci beaucoup! – Tony

Questions connexes