1

に格納されているオブジェクトの配列を指定して、最も高い値を$my_array持つ 2 つのオブジェクトを抽出し、それらを別のオブジェクト配列に配置したいと思います。count配列は以下のように構成されています。

どうすればそれを行うことができますか?

array(1) { 
     [0]=> object(stdClass)#268 (3) { 
             ["term_id"]=> string(3) "486" 
             ["name"]=> string(4) "2012" 
             ["count"]=> string(2) "40"
     } 
     [1]=> object(stdClass)#271 (3) { 
             ["term_id"]=> string(3) "488" 
             ["name"]=> string(8) "One more"
             ["count"]=> string(2) "20"  
     } 
     [2]=> object(stdClass)#275 (3) { 
             ["term_id"]=> string(3) "512" 
             ["name"]=> string(8) "Two more"
             ["count"]=> string(2) "50"  
     } 
4

2 に答える 2

5

これには多くの方法があります。単純な方法の 1 つはusort()、配列を並べ替えてから、最後の 2 つの要素を取り出すことです。

usort($arr, function($a, $b) {
    if ($a->count == $b->count) {
        return 0;
    }

    return $a->count < $b->count ? -1 : 1
});

$highest = array_slice($arr, -2, 2);

編集:

前のコードでは匿名関数を使用していることに注意してください。これは PHP 5.3 以降でのみ使用できます。5.3 未満を使用している場合は、通常の関数を使用できます。

function myObjSort($a, $b) {
    if ($a->count == $b->count) {
        return 0;
    }

    return $a->count < $b->count ? -1 : 1
}

usort($arr, 'myObjSort');

$highest = array_slice($arr, -2, 2);
于 2012-04-27T16:02:28.060 に答える
0

array_walk()を使用してから、count の値をチェックする関数を作成できます。

于 2012-04-27T16:02:00.207 に答える