[RESOLU] Tri array

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 : [RESOLU] Tri array

Re: Tri array

par Bisvan » 22 déc. 2014, 13:17

Merci bcp !

Re: Tri array

par tesmet » 20 déc. 2014, 18:48

Salut

var_dump permet de voir le contenu de variables lorsque l'on est en debug, où l'utiliser? dans ton cas juste après le array_multisort()
$data[] = array('nom' => "NOM A", 'TOTAL1' => "10", 'TOTAL2' => "5");
$data[] = array('nom' => "NOM B", 'TOTAL1' => "20", 'TOTAL2' => "10");
$data[] = array('nom' => "NOM C", 'TOTAL1' => "30", 'TOTAL2' => "15");
                
        foreach ($data as $key => $row) 
        {
        $nom[$key]  = $row['nom'];
        $TOTAL1[$key] = $row['TOTAL1'];
        $TOTAL2[$key] = $row['TOTAL2'];
        }

        // Trie les données par TOTAL1 décroissant, TOTAL2 croissant
        // Ajoute $data en tant que dernier paramètre, pour trier par la clé commune
        array_multisort($TOTAL1, SORT_DESC, $TOTAL2, SORT_DESC, $data);
var_dump($data);

        foreach ($TOTAL1 as $key => $val)
        {
                
                echo ''.$TOTAL1[$key].' '.$TOTAL2[$key].' '.$nom[$key].'<BR>';
        
        }
Mais c'est pour aider à débuger un script. Pour ton code, il faut remplacer $data dans le array_multisort() par $nom pour que la boucle foreach() qui suit affiche les valeurs dans le bon ordre
		array_multisort($TOTAL1, SORT_DESC, $TOTAL2, SORT_DESC, $nom);

        foreach ($TOTAL1 as $key => $val)
        {
                
                echo ''.$TOTAL1[$key].' '.$TOTAL2[$key].' '.$nom[$key].'<BR>';
        
        }
Si tu veux conserver $data trier comme tu le veux, alors il faut changer la boucle foreach()
        array_multisort($TOTAL1, SORT_DESC, $TOTAL2, SORT_DESC, $data);
		
		foreach($data as $ligne) {
		  echo $ligne['TOTAL1'].' '.$ligne['TOTAL2'].' '.$ligne['nom'].'<br/>';
		}
Bonne chance

Re: Tri array

par Bisvan » 20 déc. 2014, 15:55

Bonjour,

merci pour votre réponse.
Par contre je ne sais à quel moment utiliser var_dump et comment l'utiliser ?
Merci pour votre aide

Re: Tri array

par tesmet » 19 déc. 2014, 19:39

Bonjour,
J'ai 3 valeurs, sauf que j'ai un problème à l'affichage (le tri a bien lieu entre les 2 totaux mais le nom ne correspond plus aux totaux).
	// Trie les données par TOTAL1 décroissant, TOTAL2 croissant
	// Ajoute $data en tant que dernier paramètre, pour trier par la clé commune
	array_multisort($TOTAL1, SORT_DESC, $TOTAL2, SORT_DESC, $data);
Parce que $nom n'est pas dans le array_multisort(), par contre $data y est et un var_dump($data) affichera toutes les informations dans le bonne ordre.

Tri array

par Bisvan » 19 déc. 2014, 18:16

Bonjour,

j'ai un tableau php que j'aimerai trier.
J'ai 3 valeurs, sauf que j'ai un problème à l'affichage (le tri a bien lieu entre les 2 totaux mais le nom ne correspond plus aux totaux).

Une idée ?
$data[] = array('nom' => "NOM A", 'TOTAL1' => "10", 'TOTAL2' => "5");
$data[] = array('nom' => "NOM B", 'TOTAL1' => "20", 'TOTAL2' => "10");
$data[] = array('nom' => "NOM C", 'TOTAL1' => "30", 'TOTAL2' => "15");
		
	foreach ($data as $key => $row) 
	{
    	$nom[$key]  = $row['nom'];
    	$TOTAL1[$key] = $row['TOTAL1'];
	$TOTAL2[$key] = $row['TOTAL2'];
	}

	// Trie les données par TOTAL1 décroissant, TOTAL2 croissant
	// Ajoute $data en tant que dernier paramètre, pour trier par la clé commune
	array_multisort($TOTAL1, SORT_DESC, $TOTAL2, SORT_DESC, $data);

	foreach ($TOTAL1 as $key => $val)
	{
		
		echo ''.$TOTAL1[$key].' '.$TOTAL2[$key].' '.$nom[$key].'<BR>';
	
	}