php - 根据 id 和 parent_id 属性对集合(或对象数组)进行排序
问题描述
我遇到了基于对象 id 和对象的 parent_id 属性对 Laravel 集合进行排序的问题。
目前,我有以下格式的对象集合:
Collection {#563 ▼
#items: array:20 [▼
0 => Object {#546 ▶}
1 => Object {#544 ▶}
2 => Object {#540 ▶}
3 => Object {#542 ▶}
4 => Object {#541 ▶}
5 => Object {#536 ▶}
]
}
每个对象都有以下属性:
#attributes: array:8 [▼
"id" => "70"
"name" => "Object Name 70"
"parent_id" => "75"
]
我需要对该集合进行排序,首先是父母,然后是孩子。然后是父母和孩子。一个对象的 parent_id 为 NULL。更像这样的东西:
Parent
Child
Child
Parent
Parent
Child
Child
Child
Parent
解决方案
按 parent_id(从最低到最高)对集合进行排序,如果父 id 相等,则按 id(从最低到最高)排序。
这种方法假定集合中的第一个元素应该是根父元素( parent_id 为 NULL 的元素),并且为了使对象成为对象的父元素,父元素必须首先存在,因此总是具有较低的 id比它的任何孩子都要好。
推荐阅读
- java - 在后台使用 Netty 与 Tomcat 时 Spring webFlux 的差异
- ionic-framework - 如何调整离子复选框的高度和宽度?
- ssis - 找不到配置文件
- r - 更改现有 Df 中的语言编码(不在导入时)
- python - 使用python从json文件中删除最后一个逗号
- excel - 当在合并单元格中找到值时,.FindNext 不会“环绕”
- c# - 在项目之间传递信息的快捷方式
- machine-learning - 我们如何决定卷积自动编码器中的卷积层数?
- authentication - 如何停止 Sitecore 重定向到某些 URL 的登录页面
- r - 无法使用 Rstudio 写入 csv 文件