Trier un tableau multidimentionnel

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Trier un tableau multidimentionnel

par Elie » 25 mai 2009, 22:37

$media = array(
		0 => array(025, "Je t'aime, toi qui m'aide", 256,'Matable1'),
		1 => array(196, "Il fait beau", 142,'Matable1'),
		2 => array(041, "Vive toi", 103,'Matable1'),
		3 => array(869, "La Libellule", 25,'Matable1'),
		4 => array(186, "Tu es super", 2,'Matable1')
		);

$ordre = array(0 => 256, 1 => 142, 2 => 103, 3 => 25, 4 => 2);

// On crée le tableau en pele mele.
/* $media[$i] = array($variable["id"], $variable["titre"], $variable["chiffre"], 'MaTable2'); */
// On fait un tableau avec que les chiffres.
/* $ordre[$i] = $variable["chiffre"]; */
// On classe ce tableau d'ordre en fonction de la value inversée
rsort($ordre);


// On affiche les resultats en fonction du nouvel ordre :)
foreach($ordre as $k => $v) {
echo $media[$k][0].' '.$media[$k][1].' '.$media[$k][2].' '.$media[$k][3].'<br />';
}
Chez moi ca marche :)
Suffit de virer les 2 tableaux d'exemple et de se servir des lignes de generation de tableau automatique

par Smon » 25 mai 2009, 17:41

Oui, en fait chiffre va s'incrémenter automatiquement à chaque fois qu'une personne regarde une vidéo ou écoute un mp3 sur mon site.

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

par Elie » 25 mai 2009, 10:15

Est-ce que chiffre peut avoir 2 fois le meme nombre ?

par Smon » 25 mai 2009, 09:43

Elie : Voici le résultat du print_r()

Code : Tout sélectionner

Array ( [0] => Array ( [1] => 2 [2] => 26 [3] => Audio ) [1] => Array ( [1] => 1 [2] => 2 [3] => Audio ) [2] => Array ( [1] => 1 [2] => 7 [3] => Video ) )
Je dois trier en fonction de [3]

Sinon ça :

Code : Tout sélectionner

$media[$i][$variable["chiffre"]] = array($variable["id"], $variable["titre"], $variable["chiffre"], 'MaTable2');
Ça sert à quoi ?[/code]

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

par Elie » 24 mai 2009, 23:47

$media[$i][1]=$variable["id"];
$media[$i][2]=$variable["titre"];
$media[$i][3]=$variable["chiffre"];
$media[$i][4]='MaTable2';

Devient :

$media[$i][$variable["chiffre"]] = array($variable["id"], $variable["titre"], $variable["chiffre"], 'MaTable2');

Essaye ca sinon :)

par Elie » 24 mai 2009, 23:45

Fait un print_r() qu'on comprenne vraiment :)

Trier un tableau multidimentionnel

par Smon » 23 mai 2009, 15:49

Bonjour,

Je souhaite trier un tableau multidimentionnel, mais je ne comprend pas bien comment fonctionne la fonction array_multisort, même en lisant la doc ou d'autres fils sur le forum :P

Voici comment je créé mon tableau :

Code : Tout sélectionner

$i=0; $sql="SELECT id, titre, chiffre FROM MaTable1 WHERE condition ORDER BY chiffre DESC LIMIT 0,5"; $req=mysql_query($sql) or die('SQL error !<br>'.$sql.'<br>'.mysql_error()); while($variable=mysql_fetch_assoc($req)){ $media[$i][1]=$variable["id"]; $media[$i][2]=$variable["titre"]; $media[$i][3]=$variable["chiffre"]; $media[$i][4]='MaTable1'; $i++; } $sql="SELECT id, titre, chiffre FROM MaTable2 WHERE condition ORDER BY chiffre DESC LIMIT 0,5"; $req=mysql_query($sql) or die('SQL error !<br>'.$sql.'<br>'.mysql_error()); while($variable=mysql_fetch_assoc($req)){ $media[$i][1]=$variable["id"]; $media[$i][2]=$variable["titre"]; $media[$i][3]=$variable["chiffre"]; $media[$i][4]='MaTable2'; $i++; }
Je me retrouve donc avec un tableau trié ainsi :

Code : Tout sélectionner

[0] [001] [Titre1] [chiffre1] [Matable1] [1] [002] [Titre2] [chiffre2] [Matable1] [2] [003] [Titre3] [chiffre3] [Matable1] [3] [001] [Titre4] [chiffre4] [Matable2] [4] [002] [Titre5] [chiffre5] [Matable2] [5] [003] [Titre6] [chiffre6] [Matable2]
Et j'aimerais trier mon tableau en fonction de la variable chiffre.

Par exemple, si j'ai ça :

Code : Tout sélectionner

[0] [869] [La Libellule] [25] [Matable1] [1] [186] [Tu es super] [2] [Matable1] [2] [196] [Il fait beau] [142] [Matable2] [3] [041] [Vive toi] [103] [Matable2] [4] [025] [Je t'aime, toi qui m'aide] [256] [Matable1]
J'aimerais avoir ça :

Code : Tout sélectionner

[0] [025] [Je t'aime, toi qui m'aide] [256] [Matable1] [1] [196] [Il fait beau] [142] [Matable2] [2] [041] [Vive toi] [103] [Matable2] [3] [869] [La Libellule] [25] [Matable1] [4] [186] [Tu es super] [2] [Matable1]
Donc si quelqu'un veut bien m'aider à comprendre comment marche cette fonction ... :)

Merci d'avance !!