0

次の構造の配列があります。

 Array
    (
        [ResultMass] => Array
            (
                [0] => SimpleXMLElement Object
                    (
                        //elements and other arrays

                        [FlightsTo] => SimpleXMLElement Object
                            (
                                [Flight] => SimpleXMLElement Object
                                    (
                                        [Company] => 4G
                                        //other elements
                                    )

                            )

                        [FlightsBack] => SimpleXMLElement Object
                            (
                                [Flight] => SimpleXMLElement Object
                                    (
                                        [Company] => 4G
                                        //other elements

                                    )

                            )

                    )
                    //other elements of 'resultmass'
               )

        )

    [Error] => 0
)

この要素の "FlightsTo->Flight->Company" 文字列で ResultMass 要素を並べ替える必要があります。array_multisort 関数を使用してこれを行うにはどうすればよいですか? それとも他の方法でできますか?ありがとう。

4

2 に答える 2

0

usort独自の呼び出し可能なメソッドで関数を使用できます。以下の例

usort(&$array['ResultMass'], function ($a, $b) {
   $a1 = $a->FlightsTo->Flight->Company;
   $b1 = $b->FlightsTo->Flight->Company;
   if ($a1 == $b1) return 0;
   return ($al > $bl) ? +1 : -1;
});
于 2013-08-15T09:57:24.403 に答える
0

array_multisortデータ項目は配列ではなく、オブジェクトであるため、それを行うことはできません。usort()関数を使用して、データ配列に独自の順序を設定できます。

ケースでネストされた順序を設定するには、次のサンプルを使用します。

usort($rgData, function($rX, $rY)
{
   if($rX->FlightsTo == $rY->FlightsTo)
   {
      if($rX->Flight == $rY->Flight)
      {
         return $rX->Company<$rY->Company?-1:$rX->Company!=$rY->Company;
      }
      return $rX->Flight<$rY->Flight?-1:1;
   }
   return $rX->FlightsTo<$rY->FlightsTo?-1:1;
});
于 2013-08-15T09:51:49.630 に答える