Есть примерно вот такой массив:
[
'компонент1' => [ 'компонент2', 'компонент4'],
'компонент2' => [ 'компонент4' ],
'компонент3' => [ 'компонент1' ],
'компонент4' => [ 'компонент5' ],
'компонент5' => [ ],
]
Что означает: компонент №1 зависит от компонентов №2 и №4, компонент №2 зависит от компонента №4 и так далее.
Как получить список всех компонентов, упорядоченный в соответствии с зависимостями? В моём примере это будет список: [ Компонент5, Компонент4, Компонент2, Компонент1, Компонент3]