2010-08-12 19 views
0

En utilisant usort et STRCOMP ensemble pour commander un tableau par un de ses touches a un effet bizarre: il retourne mon tableau avec moins d'éléments dans ce que je mets dansRéorganiser un tableau PHP avec usort et StrComp: bug

. Le tableau dans mon cas contient des lignes représentant des tâches, et je veux ordonner les lignes dans le tableau par la clé 'displayorder', qui est un nombre mais que je veux trier de manière alphabétique (ne demandez pas pourquoi).

function treeSort($a, $b) { 
     return strcmp(strval($a['displayOrder']), strval($b['displayOrder'])); 
    } 

usort($tree, "treeSort"); 

Il y a neuf rangées, mais je ne récupère que six d'entre elles. Ces six sont joliment triés, au fait. Si j'utilise uasort au lieu d'usort, j'obtiens les neuf rangées, mais ordonnées de façon numérique.

+0

Pouvez-vous donner un exemple de la façon dont 'tree' $ est structuré? Aussi, quelle version de PHP? –

Répondre

0

J'ai trouvé une solution: array_multisort. C'est probablement ce que vous auriez proposé à Tim si je vous avais donné les détails sur $ tree.

obtenu le code des exemples dans la documentation sur array_multisort:

foreach ($tree as $key => $row) { 
     $sortOrder[$key] = $row['displayOrder']; 
    } 
    array_multisort($sortOrder, SORT_STRING, $tree); 
+0

Réponse tardive, mais merci! Cela a fait l'affaire. – Wytze