2010-10-27 8 views
0

Salut, je dois trier ce tableau dans desc. commander sur la base de ratingVal en utilisant php. Comment puis je faire ça.Comment trier un tableau multidimensionnel en utilisant php?

Array 
(
    [0] => Array 
     (
      [rating_postid] => 26 
      [raCnt] => 6 
      [sRate] => 18 
      [ratingVal] => 3 
     ) 

    [1] => Array 
     (
      [rating_postid] => 714 
      [raCnt] => 3 
      [sRate] => 14 
      [ratingVal] => 4.6666666666667 
     ) 

    [2] => Array 
     (
      [rating_postid] => 14 
      [raCnt] => 4 
      [sRate] => 12 
      [ratingVal] => 3 
     ) 

    [3] => Array 
     (
      [rating_postid] => 290 
      [raCnt] => 2 
      [sRate] => 10 
      [ratingVal] => 5 
     ) 

    [4] => Array 
     (
      [rating_postid] => 194 
      [raCnt] => 2 
      [sRate] => 8 
      [ratingVal] => 4 
     ) 

    [5] => Array 
     (
      [rating_postid] => 134 
      [raCnt] => 2 
      [sRate] => 6 
      [ratingVal] => 3 
     ) 

    [6] => Array 
     (
      [rating_postid] => 707 
      [raCnt] => 1 
      [sRate] => 5 
      [ratingVal] => 5 
     ) 

) 
+0

J'ai redéposé votre question pour utiliser des balises plus appropriées, par exemple. g. N'utilisez pas la balise PHP 5.3 si vous utilisez effectivement 5.2.X. – Max

Répondre

3

Utilisation usort:

function sortIt($a, $b){ 
    return $b['ratingVal'] - $a['ratingVal']; 
} 

usort($yourArray, "sortIt"); 

Pour l'ordre croissant, remplacez le $a et $b dans la soustraction.

La fonction usort vous permet de créer votre propre fonction de tri personnalisé

+0

Merci monsieur :) – learner

+0

+1 (a) parce que votre code est le moyen de le faire et (b) parce que je l'ai volé pour ma réponse! – lonesomeday

+1

Une raison pour laquelle vous n'avez pas utilisé la fonction sortIt ($ a, $ b) {return $ b ['ratingVal'] - $ a ['ratingVal'];} '? – outis

1

Si vous récupérez ces données de base de données MySQL (comme je le vois, étiquette mysql est spécifiée), vous pouvez utiliser ORDER BY dans votre requête. Si cela ne vous convient pas, vous devrez implémenter la fonction de comparaison et utiliser la fonction usort().

1

Vous avez tagué votre code "php5.3", je vais donc vous donner une réponse spécifique à 5.3.

Adaptation du code de Harmen:

usort($yourArray, function($a, $b) { 
    if($a['ratingVal'] == $b['ratingVal']) 
     return 0; 
    return ($a['ratingVal'] < $b['ratingVal']) ? 1 : -1; 
}); 

Il utilise usort et anonymous functions, un nouvel ajout en PHP 5.3.

+0

désolé monsieur j'utilise php 5.2.6 – learner

Questions connexes