对多个比较字段进行排序
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 排序。
我试图从本质上结合这两个功能。我需要按 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 排序。