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

您不能通过这样做,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 回答
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 回答