alexite
Membre récent

Hors-Ligne
Messages: 2

Je suis un lama!
|
vi pour la matirce, je sais qu'en mémoire c'est pas comme dans une base sql, mais pour l'expliquer c'étais plus simple :-).
Sinon bien j'ai fais comme tu le disais, j'ai utilisé l'algorithme de tri bulle, et voila ce que j'ai fais, qui permet de trier a partir de 2 champs de la deuxième dimension, dnas l'ordre choisis :
function array_multisort_d2($tableau,$triChamp1,$triOrdre1,$triChamp2,$triOrdre2){
function inverser($tableau, $pos1, $pos2) { $temp = $tableau[$pos1]; $tableau[$pos1] = $tableau[$pos2]; $tableau[$pos2] = $temp; return $tableau; } $nbEnregistrement = count($tableau);
for ($bubble = $nbEnregistrement; $bubble > 1; $bubble--){ for ($position = 1; $position < $bubble; $position++){ if ( ( $tableau[$position][$triChamp1]>$tableau[$position+1][$triChamp1] ) && $triOrdre1=='SORT_ASC'){ $tableau = inverser($tableau,$position,$position+1); } elseif ( ( $tableau[$position][$triChamp1]<$tableau[$position+1][$triChamp1] ) && $triOrdre1=='SORT_DESC'){ $tableau = inverser($tableau,$position,$position+1); } elseif ( $tableau[$position][$triChamp1] == $tableau[$position+1][$triChamp1] ){
if( ( $tableau[$position][$triChamp2]>$tableau[$position+1][$triChamp2] ) && $triOrdre2=='SORT_ASC'){ $tableau = inverser($tableau,$position,$position+1); } elseif ( ( $tableau[$position][$triChamp2]<$tableau[$position+1][$triChamp2] ) && $triOrdre2=='SORT_DESC'){ $tableau = inverser($tableau,$position,$position+1); } } } }
return $tableau; }
|