Bonjour,

je me tue à trier un tableau de plusieurs centaines de lignes dont le code d'encapsulation est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
$tableau[] = array($distance_gps->description, $distance_gps->name, $h);
et voici un extrait en print_r:

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 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]

Je n'y arrive pas avec array_multisort ou même du basique php en if!!
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>";
celui ci m'affiche
34154001 - MONTPELLIER - 8.7669
30132004 - LA GRAND COMBE - 76.2123
34337001 - VILLENEUVE-LES-MAG - 16.5258
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!!!!

Merci pour votre aide!