Titre: $array[ligne][colone] : choisir "colone" avant "ligne"
Posté par: alexite le le 11-01-2004 a 11:51:32
Bonjour,
j'ai poster ce porblème sur un autre forum et personne n'a trouvé de solution...
Mon problème, j'ai un tableau de 10 colones et 100 lignes tels que : $tab['ligne']['colone']. Sur chaque lignes j'ai une enregistrmenet de ma bd : $tab['10']['nom'] = François par exemple.
Or je veux classer mon tableau par Nom puis Prenom, je devrais utiliser la fontion multishort un peu comme ceci :
array_multisort($tabl['0']['nom'],$tab['0']['prenom]);
Sauf que le ['0'] est en trop, et je ne vois pas comment pouvoir spécifier la colone 'nom' sans dabord choisir la lignes :-(.
Merci d'avance. |
Titre: Re:$array[ligne][colone] : choisir "colone" avant "ligne"
Posté par: erwinol le le 11-01-2004 a 12:39:43
Ben déjà il y a un problème parce que
$tab[100][10]
C'est un tableau de 100 tableaux de 10 ... eh oui en mémoire c'est pas une matrice ;)
Tu pourrais construire toi-même un algorithme de tri en te basant sur ceux qui existent déjà.
Sinon essaye toujours en utilisant $tab[]['nom'] et $tab[]['prenom']. |
Titre: Re:$array[ligne][colone] : choisir "colone" avant "ligne"
Posté par: alexite le le 11-01-2004 a 13:07:10
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; }
|
Titre: Re:$array[ligne][colone] : choisir "colone" avant "ligne"
Posté par: erwinol le le 11-01-2004 a 23:43:39
Le tri bulle n'est pas très performant quand tu travailles avec un nombre élevé d'enregistrements mais ça fait plaisir de voir quelqu'un sur FW qui connait les algorithmes :)
Il fonctionne que tu le souhaites ton algorithme ? |
Forum-webmaster | Actionné par YaBB SE
© 2001-2003, YaBB SE Dev Team. Tous droits réservés.
|