tri sur tableau

bst
Invité n'ayant pas de compte PHPfrance

09 avr. 2011, 15:25

Bonjour,

voila mon probleme
j'ai un premier tableau
$tabcn = array ('nom' => $row['nom'], 'nbs' => $row['nbsaisons'], 'nbm' => $totmatchs, 'nbb' => $totbuts);
puis un deuxieme contenant le premier tableau
$tabtabcn[$i] = $tabcn;
Jusque la pas de problème, l'affichage se passe bien, seulement je voudrais trier mon deuxième tableau ($tabtabcn) par nombre de buts (nbb) qui se trouve dans le premier tableau.
J'ai rechercher sur le net et apparemment il faut utiliser la fonction array_multisort mais je n'arrive pas à l'utiliser correctement. Donc pourriez vous m'indiquer svp la marche a suivre ou la méthode pour trier mon tableau.

Merci pour votre aide

cordialement,
bst

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

09 avr. 2011, 16:30

salut,

a tu regardé l'exemple N° 3 de la doc ? http://fr.php.net/manual/fr/function.ar ... ample-4115

par exemple
<?php
$tabtabcn[] = array ('nom' => 'ligne 1', 'nbs' => 1, 'nbm' => 56, 'nbb' => 12);
$tabtabcn[] = array ('nom' => 'ligne 2', 'nbs' => 2, 'nbm' => 45, 'nbb' => 48);
$tabtabcn[] = array ('nom' => 'ligne 3', 'nbs' =>3, 'nbm' => 78, 'nbb' => 8);
$tabtabcn[] = array ('nom' => 'l 4', 'nbs' => 4, 'nbm' => 156, 'nbb' => 0);
$tabtabcn[] = array ('nom' => 'l5', 'nbs' => 5, 'nbm' => 456, 'nbb' => 115);
$tabtabcn[] = array ('nom' => 'L 6', 'nbs' => 6, 'nbm' => 464, 'nbb' => 34);
var_dump($tabtabcn);
echo '<hr />';
foreach ($tabtabcn as $key => $row) {
    $nom[$key] = $row['nom'];
    $nbs[$key] = $row['nbs'];
    $nbm[$key] = $row['nbm'];
    $nbb[$key] = $row['nbb'];
}
array_multisort($nbb,SORT_DESC,$tabtabcn);
var_dump($tabtabcn);
?>
donne
array
0 =>
array
'nom' => string 'l5' (length=2)
'nbs' => int 5
'nbm' => int 456
'nbb' => int 115
1 =>
array
'nom' => string 'ligne 2' (length=7)
'nbs' => int 2
'nbm' => int 45
'nbb' => int 48
2 =>
array
'nom' => string 'L 6' (length=3)
'nbs' => int 6
'nbm' => int 464
'nbb' => int 34
3 =>
array
'nom' => string 'ligne 1' (length=7)
'nbs' => int 1
'nbm' => int 56
'nbb' => int 12
4 =>
array
'nom' => string 'ligne 3' (length=7)
'nbs' => int 3
'nbm' => int 78
'nbb' => int 8
5 =>
array
'nom' => string 'l 4' (length=3)
'nbs' => int 4
'nbm' => int 156
'nbb' => int 0
trié par nbb ;)

@+
Il en faut peu pour être heureux ......

bst
Petit nouveau ! | 6 Messages

09 avr. 2011, 16:52

je venais de résoudre le problème en passant par un troisième tableau intermédiaire (utiliser 2 tableau pour l'affichage) mais je vais utiliser ta solution qui est plus simple.
Sinon oui j'avais lu la doc mais j'apprends donc j'ai encore un peu de mal et je faisais pas tout comme il fallait :(

un grand merci a toi en tout cas ;)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

09 avr. 2011, 17:09

de rien ;)

peut tu cliquer sur le bouton résolu du message qui t'a aidé ? :-*

@+
Il en faut peu pour être heureux ......

bst
Petit nouveau ! | 6 Messages

09 avr. 2011, 17:12

je veux bien mais je dois être aveugle je ne le vois pas :oops:

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

09 avr. 2011, 17:39

un bouton vert sur les messages (sauf si t'a posté le 1er en anonyme).

@+
Il en faut peu pour être heureux ......