アイテムのフラットリストがあります。リスト内の一部のアイテムは、リスト内の他のアイテムの親です。各項目を確認し、無効になっていないことを確認する必要があります。各アイテムには有効期限があり、アイテム自体またはその親の有効期限が経過している場合、そのアイテムは無効です。リストからすべての無効なアイテムを効率的に削除するにはどうすればよいですか?
基本的に、配列内のデータの階層セットが与えられます。各アイテムには、独自の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
)
)
最初の段落に従って無効なすべてのアイテムを削除し、残りのアイテムの配列を返す効率的な方法を見つけたいと思います。
ありがとう