0

この多次元 php オブジェクトを変数 'i_lastname' でソートする必要があります。

usort と ksort を使用してほとんどの例を試しましたが、役に立ちませんでした。ほとんどの例はこのようなものですが、私にはうまくいきません。

function sort_by_name($a, $b)
{
  return ($a->i_lastname < $b->i_lastname ? -1 : 1);
}
usort($cards, 'sort_by_name');

これがオブジェクト構造です。

ありがとうございました。

Array
(
    [0] => Array
        (
            [officer_id] => 4D5DEF60
            [card_id] => 5
            [general] => Array
                (
                    [0] => Array
                        (
                            [i_officer_id] => 4D5DEF60
                            [i_officer_name] => 
                            [i_datetime] => 2012-06-12 13:47:00
                            [i_location] => 17 Rue de Neuch, Yvette, France
                            [i_lat] => 48.6955
                            [i_lon] => 2.21458
                            [i_reason] => DUI
                        )
                )
            [subject] => Array
                (
                    [0] => Array
                        (
                            [subject_id] => 6
                            [i_lastname] => Toro
                            [i_firstname] => Benicio
                        )
                    [1] => Array
                        (
                            [subject_id] => 9
                            [i_lastname] => Limon
                            [i_firstname] => Pedro
                        )
                )
            [vehicle] => Array
                (
                )
        )

    [1] => Array
        (
            [officer_id] => 4D5DEF60
            [card_id] => 2
            [general] => Array
                (
                    [0] => Array
                        (
                            [i_officer_id] => 0f3b45a3
                            [i_officer_name] => 
                            [i_datetime] => 2012-06-06 19:42:00
                            [i_location] => 10231 Yankee St, Miami, USA
                            [i_lat] => 39.5952
                            [i_lon] => -84.2003
                            [i_reason] => Speeding
                        )
                )
            [subject] => Array
                (
                    [0] => Array
                        (
                            [subject_id] => 3
                            [i_lastname] => Doe
                            [i_firstname] => John
                        )
                    [0] => Array
                        (
                            [subject_id] => 15
                            [i_lastname] => Doe
                            [i_firstname] => Jane
                        )
                )
            [vehicle] => Array
                (
                )
        )
)
4

1 に答える 1

1

オブジェクトではなく、配列を扱っているの['...']ではなく、使用する必要があります。->...

コールバックは次のようになります。

return strnatcasecmp($a['i_lastname'],$b['i_lastname']);

strcmpstrcasecmpstrnatcmpまたはのいずれかstrnatcasecmpが正常に動作するはずです。実行している作業に最適なものを決定する必要があります。

于 2012-06-12T14:37:34.817 に答える