|
|
|
|
PHP: classement tableau multidimensionel
Dernière réponse le 15 avr 2008 à 16:29:43 123biwei, le 16 oct 2007 à 13:02:47Bonjour,
Je deviens fou pour un truc qui est certainment tout bete.
J'ai un tableau mutlidirectionel pour les joueur de mon equipe de foot.
Le tableau est cree de la maniere suivante
for ($i=0 ; $i>$nombre de joueur ; $i++) {
$class_but[$i]['buts'] = $totalbuts;
$class_but[$i]['id'] = $id;
$class_but[$i]['selection'] = $nbr_selection;
// ....etc ...
}
Maintenant je voudrais le classer par buteur (facile) mais aussi, car il y en a qui ont le meme nbre de buts, par selection puis par carton, etc...
Comment faire?
J'ai essaye avec array_multisort() je n'y arrive pas
Ou avce des fonctions trouve sur le net comme arrayColumnSort()
RIEN A FAIRE..
Je brule un cyber cierge a celui qui me donne la reponse. (a defaut de me bruler le cerveau!)
Merci,
Pierre.
Configuration: Windows XP Firefox 2.0.0.7
Bonjour,
|
Xavier,
do {
$class_but[]= array('buts'=> $totalRows_buts,
id'=>$row_joueurs1['user_id'],
'selections'=> $totalRows_selections ,
'posts' =>$totalRows_posts,
'buts_match' => $totalRows_selections_match );
} while ($row_selections_match = mysql_fetch_assoc($selections_match));
Le resulat var_dump est: array(3) { [0]=> array(5) { ["buts"]=> int(2) ["id"]=> string(1) "2" ["selections"]=> int(1) ["posts"]=> int(4) ["buts_match"]=> int(1) } [1]=> array(5) { ["buts"]=> int(1) ["id"]=> string(1) "4" ["selections"]=> int(4) ["posts"]=> int(367) ["buts_match"]=> int(2) } [2]=> array(5) { ["buts"]=> int(3) ["id"]=> string(1) "5" ["selections"]=> int(1) ["posts"]=> int(0) ["buts_match"]=> int(1) } }
EN FAIT J'AI PRESQUE LA SOLUTION: <?php
$data[] = array('volume' => 67, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 1);
$data[] = array('volume' => 85, 'edition' => 6);
$data[] = array('volume' => 98, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 6);
$data[] = array('volume' => 67, 'edition' => 7);
?>
Dans cet exemple, nous allons trier la colonne volume par ordre d?oissant, et la colonne edition par ordre croissant. Nous avons un tableau de lignes, mais array_multisort() n?ssite un tableau de colonnes, donc nous utilisons le code suivant pour obtenir les colonnes et ainsi effectuer le tri. <?php
// Obtient une liste de colonnes
foreach ($data as $key => $row) {
$volume[$key] = $row['volume'];
$edition[$key] = $row['edition'];
}
// Tri les donn? par volume d?oissant, edition croissant
// Ajoute $data en tant que premier param?e, pour trier par la cl?ommune
array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data);
?>
Mais la j'ai essaye de l'adapter a mon code:
/*foreach ($class_but as $key => $row) {
$buts[$key] = $row['buts'];
$selections[$key] = $row['selections'];
}
// Tri les donn? par volume d?oissant, edition croissant
// Ajoute $data en tant que premier param?e, pour trier par la cl?ommune
array_multisort($buts, SORT_DESC, $selections, SORT_DESC, $class_but);
Et j'obtiens l'erreur du style: Warning: Cannot use a scalar value as an array in D:\www\les_bleus\Copy of index.php -->Je sent que la notion de tableau va mettre du temps a s'installer dans mon esprit ou les neuronnes sont deja bien attaqués :-( Merci pour ton aide |
Répondre à 123biwei
|
Hello nicolas,
|

