0

内部値の非標準の並べ替えで配列を並べ替えようとしていますが、他の値が等しい場合は、その順序を保持します。だから私はこれを行います:

$articles[0]['name']='Article 1';
$articles[0]['grouping']='';

$articles[1]['name']='Article 2';
$articles[1]['grouping']='Item group';

$articles[2]['name']='Article 3';
$articles[2]['grouping']='';

$articles[3]['name']='Article 4';
$articles[3]['grouping']='Item group';

$articles[4]['name']='Article 5';
$articles[4]['grouping']='';

function cmpBySort($a, $b) {
    return strcmp($a["grouping"], $b["grouping"]);
}
usort($articles, 'cmpBySort');

foreach ($articles as $article){
    echo $article['name'].' - '.$article['grouping'].'<br>';
}

どの種類が好きですか:

Article 5 - 
Article 1 - 
Article 3 - 
Article 2 - Item group
Article 4 - Item group

しかし、私は第2条-アイテムグループ第4条-アイテムグループ第1条-第3条-第5条-を達成したい

最後に空白が必要であることに気づき、同等の場合は、記事名で並べ替えます(つまり、5,1,3ではなく1,3,5)

誰かがこれを理解するのを助けることができる配列ウィズであることを願っています!ありがとう!スコット

4

1 に答える 1

4

試す:

    function cmpBySort($a, $b) {
        if (strcmp($a["grouping"], $b["grouping"]) == 0) {
            return strcmp($a["name"], $b["name"]);
        }
        return -strcmp($a["grouping"], $b["grouping"]);
    }
于 2012-05-08T06:58:38.670 に答える