Tri sur 2 colonnes

Eléphanteau du PHP | 15 Messages

27 oct. 2018, 16:10

Bonjour,
Voici un code simple :
<?php
	$nb_ligne=7;
    $tableau[1][1] = "Dupont";
    $tableau[1][2] = 1;
	$tableau[2][1] = "Robert";
    $tableau[2][2] = 2;
	$tableau[3][1] = "Durand";
    $tableau[3][2] = 3;
	$tableau[4][1] = "Toto";
    $tableau[4][2] = 4;
	$tableau[5][1] = "Martine";
    $tableau[5][2] = 5;
	$tableau[6][1] = "Delphine";
    $tableau[6][2] = 6;
	$tableau[7][1] = "Caroline";
    $tableau[7][2] = 7;	
	
	//------------------Tri inverse de 7 à 1
	//RSORT($tableau);
	//array_multisort($tableau, SORT_ASC, SORT_STRING,
     //           $tableau, SORT_NUMERIC, SORT_DESC);
	
	//-------Affiche
	echo"<center><table border width='50%'>";
		for($i=1;$i<=$nb_ligne;$i++)
		{
    		echo"<tr>
				<td width='50%' align='center'>".$tableau[$i][1]."</td>
				<td width='50%' align='center'>".$tableau[$i][2]."</td>
			</tr>";	
		}
	echo"</table></center><br>";
?>
Je n'arrive pas à trier sur la deuxième colonne en ordre décroissant.
Merci
Guy

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

28 oct. 2018, 19:50

Si ton tableau PHP est véritablement sous la forme de ton exemple où l'index 2 est égal à la clé de 1er niveau, alors je pense que tu peux faire un tableau beaucoup plus simple en utilisant les clés
<?php
$tableau=array(
	1 => 'Dupont', 
	2 => 'Robert', 
	3 => 'Durand', 
	4 => 'Toto', 
	5 => 'Martine', 
	6 => 'Delphine', 
	7 => 'Caroline');
Et ensuite :
- Pour les avoir dans l'ordre d'ID (=clé du tableau) : https://php.net/ksort
- Pour les avoir dans l'ordre inverse d'ID : https://php.net/krsort
- Pour les avoir par ordre alphabétique (=valeur) : https://php.net/sort
- Pour les avoir par ordre alphabétique inverse : https://php.net/rsort


Si tu veux faire des tris sur des tableaux plus complexes, il y a un très bon exemple dans les commentaires de la doc, ici :
http://php.net/manual/fr/function.sort.php#99419
Quand tout le reste a échoué, lisez le mode d'emploi...