trier un tableau multidimentionnel

Petit nouveau ! | 9 Messages

06 juin 2007, 19:27

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é.

ViPHP
ViPHP | 928 Messages

07 juin 2007, 09:48

Pour trier les tableaux multidimensionnels je te recommande plutôt la fonction usort()

Petit nouveau ! | 9 Messages

07 juin 2007, 12:35

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

Eléphant du PHP | 199 Messages

07 juin 2007, 13:41

// 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...
Klomac - Blog Lambda

Petit nouveau ! | 9 Messages

18 juin 2007, 19:35

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 !!!

Invité
Invité n'ayant pas de compte PHPfrance

18 juin 2007, 21:00

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.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

18 juin 2007, 22:47

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 ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Invité
Invité n'ayant pas de compte PHPfrance

18 juin 2007, 23:34

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 )

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

18 juin 2007, 23:37

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 ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Invité
Invité n'ayant pas de compte PHPfrance

19 juin 2007, 21:30

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:

Eléphant du PHP | 259 Messages

19 juin 2007, 21:54

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.