Bonsoir,
J'ai commencé il y a quelques temps un petit site perso en PHP, mais il y a de nombreuses subtilités dans ce langage (qui ne m'est pas encore très familier) qui me troublent, notamment au sujet des tableaux.
Prenons un tableau défini ainsi :
1 2 3 4 5 6 7 8 | $tab = array ( "premier" => 4, "second" => 2, "machin" => 3, "chose" => 1, "truc" => 5, ); |
J'aimerais pouvoir trier ces éléments d'après leurs valeurs, mais (et c'est ça qui me pose problème) il faudrait que les éléments "premier" et "second" restent (respectivement) en première et seconde position.
Il faudrait donc au final obtenir le tableau suivant :
{ ["premier"]=> int(4) ["second"]=> int(2) ["truc"]=> int(5) ["machin"]=> int(3) ["chose"]=> int(1) }
.
Pour le moment, j'ai ça :
1 2 3 4 5 6 7 8 9 10 11 12 13 | uksort($tab, function($a, $b) use($tab) { if($b == "premier") return 1; if($a == "premier") return -1; if($b == "second") return 1; if($a == "second") return -1; return $tab[$b] - $tab[$a]; }); |
Et ça fonctionne. Mais je me dis que c'est pas très beau, et probablement pas la meilleure manière d'y procéder.
Donc ma question : comment conserver la position de certains éléments ? Faudrait-il modifier manuellement l'index de ceux-ci par la suite ? Si oui, comment ?