我有一个简单的项目清单。列表中的某些项目是列表中其他项目的父项。我需要检查每个项目,并确保它不是无效的。每个项目都有一个过期时间,如果一个项目是自己的或它的任何父项的过期时间已过,则该项目无效。如何有效地从列表中删除所有无效项目?
本质上,我在数组中得到了一组分层数据。每个项目都有自己的 id、parentID、时间信息和其他无用数据。
由于也可以有多个根节点,因此这有点复杂。它是一个项目没有 parentID,它是一个根节点。
示例数组(省略日期时间和其他信息):
Array
(
[0] => MyObject
(
[id:protected] => 1
[parentID:protected] => 2
)
[1] => MyObject
(
[id:protected] => 4
)
[2] => MyObject
(
[id:protected] => 2
[parentID:protected] => 4
)
[3] => MyObject
(
[id:protected] => 3
)
[4] => MyObject
(
[id:protected] => 5
[parentID:protected] => 3
)
)
我想找到一种有效的方法来删除根据第一段无效的所有项目,并返回剩余项目的数组。
谢谢