我有一些相互关联的实体。
Answer
- AnswerGroup
AnswerGroup
Condition
- Question
Notion
Question
- AnswerGroup
- Theme
- Notion
Theme
PHP表示:
$entities = [
['name' => 'Answer', 'relations' => ['AnswerGroup']],
['name' => 'AnswerGroup', 'relations' => []],
['name' => 'Condition', 'relations' => ['Question']],
['name' => 'Notion', 'relations' => []],
['name' => 'Question', 'relations' => ['Theme', 'AnswerGroup', 'Notion']],
['name' => 'Theme', 'relations' => []],
];
我需要对它们进行排序,以使依赖关系排在第一位。我期待的结果是:
array:6 [
0 => "AnswerGroup"
1 => "Answer"
2 => "Notion"
3 => "Theme"
4 => "Question"
5 => "Condition"
]
我天真地以为我可以简单地使用
usort
像那样
usort($entities, function ($entityA, $entityB) {
if (in_array($entityB, $entityA['relations'])) {
return 1;
}
if (in_array($entityA, $entityB['relations'])) {
return -1;
}
return 0;
});
但是:
dump(array_column($entities ,'name'));
给予
array:6 [
0 => "Answer"
1 => "AnswerGroup"
2 => "Condition"
3 => "Notion"
4 => "Question"
5 => "Theme"
]
如何订购我的实体?