2013-02-08 3 views
0

J'ai un tableau qui contient plusieurs tableaux. J'essaye d'arranger ces arrangements de la quantité de plus grands au moins nouveaux ventes. Voici l'exemple du tableau qui se poursuit pendant environ 40 tableaux:Comment organiser plusieurs tableaux par un champ spécifique

Array 
(
    [0] => Array 
     (
      [Tech] => Array 
       (
        [first_name] => Anthony 
        [last_name] => Bisignano 
       ) 

      [0] => Array 
       (
        [new_sales] => 21 
        [upgrades] => 2 
       ) 

     ) 

    [1] => Array 
     (
      [Tech] => Array 
       (
        [first_name] => Arnold 
        [last_name] => Ybanez 
       ) 

      [0] => Array 
       (
        [new_sales] => 5 
        [upgrades] => 0 
       ) 

     ) 

La fonction que je suis en train d'utiliser est la suivante:

function aasort (&$techs, $key) { 
    $sorter=array(); 
    $ret=array(); 
    reset($techs); 
    foreach ($techs as $ii => $va) { 
     $sorter[$ii]=$va[$key]; 
    } 
    asort($sorter); 
    foreach ($sorter as $ii => $va) { 
     $ret[$ii]=$techs[$ii]; 
    } 
    $techs=$ret; 
    } 

    aasort($test,"new_sales"); 

que j'utilise cette fonction mal ou est-il une autre approche que je devrais prendre?

Répondre

0

Il existe des fonctions de tri PHP qui prennent en charge les méthodes de comparaison définies par l'utilisateur. Un code comme celui-ci devrait vous aider à commencer avec cela.

function cmp($a, $b) 
{ 
    if ($a[0]['new_sales'] == $b[0]['new_sales']) { 
     return 0; 
    } 
    return ($a[0]['new_sales'] < $b[0]['new_sales']); 
} 
usort($data, "cmp"); 
+0

Merci de cette réponse a parfaitement fonctionné. – user1916690

0

Dans ce cas, vous voudrez probablement utiliser usort() de telle sorte que vous pouvez définir votre logique de tri.

donc quelque chose comme ceci:

usort($array, function($a, $b) { 
    if ($a[0]['new_sales'] > $b[0]['new_sales']) { 
     return -1; // note we use -1 here because we want a reverse sort 
    } else if ($a[0]['new_sales'] < $b[0]['new_sales']) { 
     return 1; 
    } else { 
     return 0; 
    } 
}); 
Questions connexes