Page 1 sur 1

trier un tableau multidimentionnel

Posté : 06 juin 2007, 19:27
par chris81
Bonjour

J'ais un petit problème, je cherche à trier un tableau multidimentionnel avec la fonction array_multisort, mes tableau sont bon, je n'est aucun messages d'erreur lorsque je fait appel à la fonction, j'ais regardé dans plusieurs forum ainsi que dans la doc php et je ne comprend pas pourquoi sa ne fonctionne pas.

Je vous donne mes données
// trensforme en tableau de colone mes données
foreach ($les_plus_rechercher2 as $key => $row) 
    {
     $nb_recherches3[$key] = $row['nb_recherches3'];
     $nom[$key] = $row['nom'];
    }

// Trie mon tableau multidimentionnel		
array_multisort(
$nb_recherches3, SORT_DESC, SORT_NUMERIC, 
 $nom, SORT_ASC, SORT_STRING,
 $les_plus_rechercher2); 
		
// j'affiche mon array
print_r($les_plus_rechercher2);
et comme je l'est dit je n'est pas de messages d'erreur et mon tableau n'est pas trié.

Posté : 07 juin 2007, 09:48
par Genova
Pour trier les tableaux multidimensionnels je te recommande plutôt la fonction usort()

Posté : 07 juin 2007, 12:35
par chris81
Cette fonction me semble encore plus compliquée

je veux juste trier $nb_recherches3 por ordre numéric et décroissent, et que l'autre infos reste lier

Posté : 07 juin 2007, 13:41
par Klomac
// trensforme en tableau de colone mes données 
foreach ($les_plus_rechercher2 as $key => $row)  
    { 
     $nb_recherches3[$key] = $row['nb_recherches3']; 
     $nom[$key] = $row['nom']; 
    } 

// Trie mon tableau multidimentionnel         
array_multisort( 
$nb_recherches3, SORT_DESC, SORT_NUMERIC,  
 $nom, SORT_ASC, SORT_STRING);  
         
foreach ($nb_recherches3 as $key => $row)
{
  $les_plus_rechercher3[$key] = array('nb_recherches3' => $row, 'nom' => $noms[$key]);
}

print_r($les_plus_rechercher3);
C'est pas très propre mais je pense que ça marche.

Un commentaire sur ton nommage de variables : coder en français n'est peut-être pas un choix pertinent, car cela t'oblige à faire des fautes d'orthographe volontairement dans tes noms de variables pour qu'elles gardent leur sens (genre $les_plus_rechercher). C'est peut-être anodin mais bon...

Posté : 18 juin 2007, 19:35
par chris81
Merci pour cette réponce "Klomac", et oui les variable en francais c moyen.

En ce qui concerne le code que tu ma donné, je le teste et sa ne fonctionne pas, je ne suis pas tres familiarisé avec les tableaux, quant je test l'array avec le tableau multidimentionnel j'obtien sa
Array ( [nom] => Array ( [nb_recherches3] => [nom] => ) [nb_recherches3] => Array ( [nb_recherches3] => [nom] => ) ) 
je pense que ce n'est pas bon et j'admet ne pas savoir comment arranger sa, ce doit être encore une foi, une faute bête !!!

Posté : 18 juin 2007, 21:00
par Invité
bonsoir,

> ... car cela t'oblige à faire des fautes d'orthographe volontairement dans tes noms de variables pour qu'elles gardent leur sens (genre $les_plus_rechercher).

$les_plus_recherchés est valide en PHP.

Posté : 18 juin 2007, 22:47
par zeus
bonsoir,

> ... car cela t'oblige à faire des fautes d'orthographe volontairement dans tes noms de variables pour qu'elles gardent leur sens (genre $les_plus_rechercher).

$les_plus_recherchés est valide en PHP.
Ce n'est pas parce qu'un code est valide en PHP qu'on ne doit faire aucun effort.
Je tiens à rappeler qu'il n'y a pas le parseur PHP qui est voué à lire un code ... il y a aussi d'autre développeurs qui peuvent être bien content de pouvoir lire du francais (ou de l'anglais) intelligible.

A partir du moment où tu travailles en équipe, tu comprends à quel point c'est important ;)

Posté : 18 juin 2007, 23:34
par Invité
Zeus, on a pas dû se comprendre.

ce que j'ai voulu dire, c'est que les caractères accentués sont autorisés dans les noms de variables en PHP.

on passe de "$les_plus_rechercher" ( avec la remarque de Klomac )
à "$les_plus_recherchés" ( qui est en "francais intelligible" selon tes propres termes )

( chris81, je ne réponds pas à ta question, désolé de venir polluer ton post )

Posté : 18 juin 2007, 23:37
par zeus
ok, d'accord. Effectivement, je ne t'avais pas compris ;)

Toujours est-il que nous avons pu poster 2 remarques pertinentes, même si elles sont hors sujet ;)

Posté : 19 juin 2007, 21:30
par Invité
Hors sujet, c'est vrais, mais très intéressent. Je ne connaissait pas cette possibilitée, d'utiliser les accents dans les variables, sa vas être plus facile de se relire :oops: !!!

en ce qui concerne mon problème, je suis sur qu'il y a une solution simple, mais je ne suis pas assé expérimenté pour la trouver, alors si quelqu'un avais une réponse, une solution pour moi :shock:

Posté : 19 juin 2007, 21:54
par Jules Petibidon
Hello,

C'est rigolo ca va bientot faire 15 jours que tu cherches, alors que la réponse t'avait été donnée par genova... c'est vrai que vu de loin usort() a l'air compliqué, et pourtant une fois qu'on a pigé le principe , c'est simplissime.

Sinon petit tips rigolo mais peut-être peu fiable (encore que... ) : Les fonctions sort(), rsort() (et tous les bidules finissant en sort non spécifiques aux tableaux multidimensionnels) sur un tableau multidimensionnel triera les valeurs, donc des tableaux, sur la première clé déclarée. Cela fonctionne aussi pour les tableaux d'objets.