-1

たくさんのキーを持つ配列があります。キーの 1 つを値で並べ替えたい。

Array ( 
   [0] => stdClass Object ( 
                            [id] => 1 
                            [question] => Action 
                            [specific_to_movie_id] => 1
                            [total_yes] => 4 ) 
   [1] => stdClass Object ( 
                            [id] => 2 
                            [question] => Created by DC Comics 
                            [specific_to_movie_id] => 1 
                            [total_yes] => 1 ) 
   [2] => stdClass Object ( 
                            [id] => 3 
                            [question] => Christian Bale 
                            [specific_to_movie_id] => 1 
                            [total_yes] => 1 ) 
   )

配列は上記のようになり、「Total_yes」でソートしたい

PHPでこれを行うにはどうすればよいですか?

4

4 に答える 4

3

標準の配列ソートよりも少し複雑なため、以下を使用する必要がありますusort

function compare_items( $a, $b ) {
    return $a->total_yes < $b->total_yes;
}


$arrayToSort = array ( 
    (object) array( 
        'id' => 1, 
        'question' => 'Action', 
        'specific_to_movie_id' => 1,
        'total_yes' => 4
    ), 
    (object) array( 
        'id' => 2,
        'question' => 'Created by DC Comics',
        'specific_to_movie_id' => 1,
        'total_yes' => 1
    ),
    (object) array( 
        'id' => 3,
        'question' => 'Christian Bale',
        'specific_to_movie_id' => 1,
        'total_yes' => 1
    ) 
);


usort($arrayToSort, "compare_items");

並べ替え順序を逆にしたい場合はreturn $a->total_yes < $b->total_yes、< (より小さい) の代わりに > (より大きい) を使用するように変更してください。

于 2013-02-24T10:27:46.713 に答える
2

次のようにusortを使用できます。

function cmp($a, $b) {
  return $a < $b;
}

usort($your_array, "cmp");
于 2013-02-24T10:26:12.710 に答える
0

オブジェクトがあるため、[usort()][http://www.php.net/manual/en/function.usort.php] を使用する必要があります。

usort($array, function($a, $b){
    if ($a->total_yes == $b->total_yes)
        return 0;
    return ($a->total_yes > $b->total_yes) ? -1 : 1;});
print_r($array);
于 2013-02-24T10:30:24.940 に答える
0

特定の比較関数を使用する Usort() を使用できます。

定義と使用法

usort() 関数は、ユーザー定義の比較関数を使用して配列をソートします。

構文

usort(配列、関数);

配列-必須。ソートする配列を指定します

myfunction - オプション。呼び出し可能な比較関数を定義する文字列。最初の引数が 2 番目の引数よりも <、=、または > の場合、比較関数は 0 よりも小さい整数 <、=、または > を返す必要があります

<?php

    function cmp($a, $b)
    {
        if ($a->total_yes == $b->total_yes) {
            return 0;
        }
        return ($a->total_yes < $b->total_yes) ? -1 : 1;
    }



    usort($array, "cmp");

    ?>
于 2013-02-24T10:32:44.593 に答える