Bonjour,
je me tue à trier un tableau de plusieurs centaines de lignes dont le code d'encapsulation est :
et voici un extrait en print_r:
Code : Sélectionner tout - Visualiser dans une fenêtre à part $tableau[] = array($distance_gps->description, $distance_gps->name, $h);
je souhaite trier le tableau selon la troisième colonne (312.7362, 286.4661, 294.8129) du plus petit au plus grand et en ressortir les 3 plus petites valeurs associées $tableau[$u][0], $tableau[$u][1] et $tableau[$u][2]Array ( [0] => Array ( [0] => 01033002 [1] => BELLEGARDE [2] => 312.7362 ) [1] => Array ( [0] => 01089001 [1] => AMBERIEU [2] => 286.4661 ) [2] => Array ( [0] => 01185004 [1] => HAUTEVILLE [2] => 294.8129 ) )
Je n'y arrive pas avec array_multisort ou même du basique php en if!!![]()
celui ci m'affiche
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 $nblignestableau = count ( $tableau ); $u = 0; $v = 10000; $w = 10000; while($u < $nblignestableau){ if($tableau[$u][2] < $v){ $k = $w; $w = $v; $v = $tableau[$u][2]; $x1 = $tableau[$u][0]; $y1 = $tableau[$u][1]; $z1 = $tableau[$u][2]; }elseif($tableau[$u][2] < $w){ $k = $w; $w = $tableau[$u][2]; $x2 = $tableau[$u][0]; $y2 = $tableau[$u][1]; $z2 = $tableau[$u][2]; }elseif($tableau[$u][2] < $k){ $k = $tableau[$u][2]; $x3 = $tableau[$u][0]; $y3 = $tableau[$u][1]; $z3 = $tableau[$u][2]; }; $u = $u + 1; }; echo "$x1 - $y1 - $z1 <br><br>"; echo "$x2 - $y2 - $z2 <br><br>"; echo "$x3 - $y3 - $z3 <br><br>";
la première et troisième valeur sont corrects mais pas la seconde qui devrait être 34151005 - MARSILLARGUES - 11.5652. Je n'y comprend rien!!!!34154001 - MONTPELLIER - 8.7669
30132004 - LA GRAND COMBE - 76.2123
34337001 - VILLENEUVE-LES-MAG - 16.5258
Merci pour votre aide!
Partager