[英]How can I access a child array in a Laravel Collection?
我有一個數據庫搜索,它返回數千個條目,然后按兩列分組,如下所示:
$results = $merged->groupBy(['source', 'parent']);
結果是 Laravel Collection 具有以下結構,首先按“源”( 1_k12_fill_trypsin_dig
)分組,然后是“父”(2、4、9、10 2, 4, 9, 10...
),每個“父”都有一定數量的子:
我想按父母的孩子數量對父母進行排序。 因此,在此示例中,我希望“4”位於頂部,以便子計數在某些閉包中用作“真值測試”。 我只是不知道如何訪問這些元素。 我希望使用 Collection 方法,而不是使用 vanilla PHP 循環。
你試過按他們的數量排序嗎?
按來源計數排序
$merged
->groupBy(...)
->sort(function ($sources) {
return collect($sources)->count();
});
按父母人數排序
$merged
->groupBy(...)
->sort(function ($sources) {
return collect($sources)
->sum(function ($parents) {
return count($parents);
});
});
要僅對嵌套數組進行排序,您可以使用map()
或transform()
。
$merged
->groupBy(['source', 'parent'])
->map(function ($source) {
return collect($source)
->sortByDesc(function ($parent) {
return count($parent);
})
->all();
});
// PHP 7.4+
$merged
->groupBy(['source', 'parent'])
->map(fn($source) =>
collect($source)
->sortByDesc(fn($parent) => count($parent))
->all()
);
我使用 Faker 生成了與您類似的 collections,它對我有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.