【问题标题】:Sort multiple compared fields对多个比较字段进行排序
【发布时间】:2016-01-15 16:17:00
【问题描述】:

我试图从本质上结合这两个功能。我需要按 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;
       });

【问题讨论】:

    标签: php usort


    【解决方案1】:

    您可以在第二个中添加一个 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 排序。

    【讨论】:

    • 感激不尽!作为一个 n00b 有时是痛苦的!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-02
    • 2011-09-14
    • 2012-03-04
    相关资源
    最近更新 更多