我有一个具有以下结构的数组:
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函数来做到这一点?或者可以通过其他方法完成?感谢。
答案 0 :(得分: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;
});
答案 1 :(得分: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;
});