如何解决PHP过滤器数组,同时保持相等比较的顺序
我有一个对象数组,需要按last_name排序。某些last_name字段为空,在其中为空的情况下,它们应保持相同顺序,但应移至数组顶部。
发生的是,所有具有空值的结果都以不同的顺序彼此相邻返回。
我通过以下方法解决了这个问题:首先过滤掉具有空值的项目,然后对其余项目进行排序,然后将它们合并在一起。
我想知道是否有更好的方法?
$emptySortValues = array_values(array_filter($condensedRoResults,function ($roResult) {
return empty($roResult['last_name']);
}));
$notEmptySortValues = array_values(array_filter($condensedRoResults,function ($roResult) {
return ! empty($roResult['last_name']);
}));
usort($notEmptySortValues,function ($a,$b) {
return strcmp($a['last_name'],$b['last_name']);
});
$condensedRoResults = array_merge($emptySortValues,$notEmptySortValues);
我找到了这个RFC提案,该提案更好地解释了我想要完成的工作。 https://wiki.php.net/rfc/stable_sorting
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。