对多个比较字段进行排序

Sort multiple compared fields

我试图从本质上结合这两个功能。我需要按 PositionDisplayOrder 排序,然后按 MemberName 字段的姓氏排序。

        usort($council_members->d, function($a, $b){

            $a = substr(strrchr($a->MemberName, ' '), 1);
            $b = substr(strrchr($b->MemberName, ' '), 1);
            return strcmp($a, $b);
        });

       usort($council_members->d, function($a, $b){
            return $a->PositionDisplayOrder > $b->PositionDisplayOrder;
       });

您可以在第二个中添加一个 if 语句。 原文:

usort($council_members->d, function($a, $b){
        return $a->PositionDisplayOrder > $b->PositionDisplayOrder;
   });

新:

usort($council_members->d, function($a, $b){
        if ($a->PositionDisplayOrder  == $b->PositionDisplayOrder) {
            $a = substr(strrchr($a->MemberName, ' '), 1);
            $b = substr(strrchr($b->MemberName, ' '), 1);
            return strcmp($a, $b);
        }
    return $a->PositionDisplayOrder > $b->PositionDisplayOrder;
});

这将导致首先按 PositionDisplay 顺序排序,然后如果它们相等则按 MemberName 排序。