0

このusort関数を使用して、配列を値で並べ替えています。

    function cmp($a, $b)
    {
        if ($a["value"] == $b["value"])
        { return 0; }
        return ($a["value"] < $b["value"]) ? -1 : 1;
    }

これで、各オブジェクトにも「アクティブ」フィールド、つまり$a["アクティブ"]があります。ソートされた配列に、最初にアクティブなもの(1)を値順に並べ、次にすべてをソートすると、非アクティブなもの(0)を配置したいと思います。この後、別のusortを使用してみましたが、うまく機能せず、多少スクランブルがかかっています。

前もって感謝します。

4

2 に答える 2

1
function cmp($a,$b){
    if ($a["active"]==$b["active"]){
        if($a["value"]==$b["value"])
            return 0;
        return $a["value"]>$b["value"])?1:-1;
    }
    return $a["active"]>$b["active"]?1:-1;
}

テストされていません-しかし、私はそれがうまくいくと思います。この種のもののための良いリソース(しかし、この特定の例ではありませんが、残念ながらあなたにとっては):http ://www.the-art-of-web.com/php/sortarray/

于 2012-05-20T13:31:40.017 に答える
0

関数に別の比較としてアクティブなものを追加するだけです。

if ($a['active'] > $b['active'])
   return 1;
} else if ($a['value'] == $b['value']) {
   return 0;
} else {
   return ($a['value'] < $b['value']) ? -1 : 1;
}
于 2012-05-20T13:30:51.037 に答える