0

usortとstrcompを一緒に使用して、キーの1つで配列を並べ替えると、奇妙な効果があります。つまり、入力した項目よりも少ない項目で配列が返されます。

私の場合の配列にはタスクを表す行が含まれており、配列内の行をキー'displayorder'で並べ替えたいと思います。これは数値ですが、アルファベット順に並べ替えたいと思います(理由は聞かないでください)。

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

usort($tree, "treeSort");

9行ありますが、6行しか返されません。ちなみに、これらの6つはうまく分類されています。usortの代わりにuasortを使用すると、9行すべてが取得されますが、数値順に並べられます。

4

1 に答える 1

0

私は解決策を見つけました:array_multisort。$ treeの詳細を教えてくれたら、おそらくそれがTimに提案したことでしょう。

array_multisortのドキュメントの例からコードを取得しました。

foreach ($tree as $key => $row) {
        $sortOrder[$key] = $row['displayOrder'];
    }
    array_multisort($sortOrder, SORT_STRING, $tree);
于 2010-08-12T11:38:22.330 に答える