Laravel Group收集并按最大的价值排序

发布于 2025-01-27 03:59:10 字数 5276 浏览 1 评论 0原文

我有一个带有值的Laravel集合,我想通过“类型”进行分组,并按照最大的“概率”进行排序。这是我的收藏的样子:

Illuminate\Support\Collection Object
(
    [items:protected] => Array
        (
            [0] => Array
                (
                    [type] => correct-score
                    [name] => 1-1
                    [probability] => 10.599257670442
                    [probability_odd] => 10.142219704667
                    [odd] => 
                    [value_bet] => 0
                    [prognose_type_id] => 12
                    [value_bet_diff] => -10.142219704667
                )

            [1] => Array
                (
                    [type] => 3-way
                    [name] => 1
                    [probability] => 52.459602877727
                    [probability_odd] => 2.0491958402842
                    [prognose_type_id] => 1
                    [odd] => 2.48
                    [value_bet_diff] => 0.4308041597158
                )

            [2] => Array
                (
                    [type] => 3-way
                    [name] => 2
                    [probability] => 24.682032371379
                    [probability_odd] => 4.3553949845985
                    [prognose_type_id] => 1
                    [odd] => 2.66
                    [value_bet_diff] => -1.6953949845985
                )

            [3] => Array
                (
                    [type] => 3-way
                    [name] => X
                    [probability] => 22.857984044926
                    [probability_odd] => 4.7029519221256
                    [prognose_type_id] => 1
                    [odd] => 3.7
                    [value_bet_diff] => -1.0029519221256
                )

            [4] => Array
                (
                    [type] => double-chance
                    [name] => 1X
                    [probability] => 37.658793461327
                    [probability_odd] => 2.8545789739758
                    [prognose_type_id] => 4
                    [odd] => 1.49
                    [value_bet_diff] => -1.3645789739758
                )

            [5] => Array
                (
                    [type] => double-chance
                    [name] => X2
                    [probability] => 23.770008208152
                    [probability_odd] => 4.5225058005294
                    [prognose_type_id] => 4
                    [odd] => 1.55
                    [value_bet_diff] => -2.9725058005294
                )

            [6] => Array
                (
                    [type] => double-chance
                    [name] => 12
                    [probability] => 38.570817624553
                    [probability_odd] => 2.7870811826288
                    [prognose_type_id] => 4
                    [odd] => 1.29
                    [value_bet_diff] => -1.4970811826288
                )

            [7] => Array
                (
                    [type] => both-to-score
                    [name] => yes
                    [probability] => 58.505776168275
                    [probability_odd] => 1.8374254140447
                    [prognose_type_id] => 8
                    [odd] => 
                    [value_bet_diff] => -1.8374254140447
                )

我想作为类似的结果实现:

Illuminate\Support\Collection Object
(
    [items:protected] => Array
        (
            [0] => Array
                (
                    [type] => correct-score
                    [name] => 1-1
                    [probability] => 10.599257670442
                    [probability_odd] => 10.142219704667
                    [odd] => 
                    [value_bet] => 0
                    [prognose_type_id] => 12
                    [value_bet_diff] => -10.142219704667
                )

            [1] => Array
                (
                    [type] => 3-way
                    [name] => 1
                    [probability] => 52.459602877727
                    [probability_odd] => 2.0491958402842
                    [prognose_type_id] => 1
                    [odd] => 2.48
                    [value_bet_diff] => 0.4308041597158
                )


            [6] => Array
                (
                    [type] => double-chance
                    [name] => 12
                    [probability] => 38.570817624553
                    [probability_odd] => 2.7870811826288
                    [prognose_type_id] => 4
                    [odd] => 1.29
                    [value_bet_diff] => -1.4970811826288
                )

            [7] => Array
                (
                    [type] => both-to-score
                    [name] => yes
                    [probability] => 58.505776168275
                    [probability_odd] => 1.8374254140447
                    [prognose_type_id] => 8
                    [odd] => 
                    [value_bet_diff] => -1.8374254140447
                )

找不到类似的解决方案,所以我终于决定在这里尝试。你能帮我吗?

提前致谢!

I have a Laravel collection with values, which I want to group by 'type' and sort by the biggest 'probability'. Here is how my collection looks like:

Illuminate\Support\Collection Object
(
    [items:protected] => Array
        (
            [0] => Array
                (
                    [type] => correct-score
                    [name] => 1-1
                    [probability] => 10.599257670442
                    [probability_odd] => 10.142219704667
                    [odd] => 
                    [value_bet] => 0
                    [prognose_type_id] => 12
                    [value_bet_diff] => -10.142219704667
                )

            [1] => Array
                (
                    [type] => 3-way
                    [name] => 1
                    [probability] => 52.459602877727
                    [probability_odd] => 2.0491958402842
                    [prognose_type_id] => 1
                    [odd] => 2.48
                    [value_bet_diff] => 0.4308041597158
                )

            [2] => Array
                (
                    [type] => 3-way
                    [name] => 2
                    [probability] => 24.682032371379
                    [probability_odd] => 4.3553949845985
                    [prognose_type_id] => 1
                    [odd] => 2.66
                    [value_bet_diff] => -1.6953949845985
                )

            [3] => Array
                (
                    [type] => 3-way
                    [name] => X
                    [probability] => 22.857984044926
                    [probability_odd] => 4.7029519221256
                    [prognose_type_id] => 1
                    [odd] => 3.7
                    [value_bet_diff] => -1.0029519221256
                )

            [4] => Array
                (
                    [type] => double-chance
                    [name] => 1X
                    [probability] => 37.658793461327
                    [probability_odd] => 2.8545789739758
                    [prognose_type_id] => 4
                    [odd] => 1.49
                    [value_bet_diff] => -1.3645789739758
                )

            [5] => Array
                (
                    [type] => double-chance
                    [name] => X2
                    [probability] => 23.770008208152
                    [probability_odd] => 4.5225058005294
                    [prognose_type_id] => 4
                    [odd] => 1.55
                    [value_bet_diff] => -2.9725058005294
                )

            [6] => Array
                (
                    [type] => double-chance
                    [name] => 12
                    [probability] => 38.570817624553
                    [probability_odd] => 2.7870811826288
                    [prognose_type_id] => 4
                    [odd] => 1.29
                    [value_bet_diff] => -1.4970811826288
                )

            [7] => Array
                (
                    [type] => both-to-score
                    [name] => yes
                    [probability] => 58.505776168275
                    [probability_odd] => 1.8374254140447
                    [prognose_type_id] => 8
                    [odd] => 
                    [value_bet_diff] => -1.8374254140447
                )

I want to achieve as result something like that:

Illuminate\Support\Collection Object
(
    [items:protected] => Array
        (
            [0] => Array
                (
                    [type] => correct-score
                    [name] => 1-1
                    [probability] => 10.599257670442
                    [probability_odd] => 10.142219704667
                    [odd] => 
                    [value_bet] => 0
                    [prognose_type_id] => 12
                    [value_bet_diff] => -10.142219704667
                )

            [1] => Array
                (
                    [type] => 3-way
                    [name] => 1
                    [probability] => 52.459602877727
                    [probability_odd] => 2.0491958402842
                    [prognose_type_id] => 1
                    [odd] => 2.48
                    [value_bet_diff] => 0.4308041597158
                )


            [6] => Array
                (
                    [type] => double-chance
                    [name] => 12
                    [probability] => 38.570817624553
                    [probability_odd] => 2.7870811826288
                    [prognose_type_id] => 4
                    [odd] => 1.29
                    [value_bet_diff] => -1.4970811826288
                )

            [7] => Array
                (
                    [type] => both-to-score
                    [name] => yes
                    [probability] => 58.505776168275
                    [probability_odd] => 1.8374254140447
                    [prognose_type_id] => 8
                    [odd] => 
                    [value_bet_diff] => -1.8374254140447
                )

Haven't been able to find similar solutions, so I finally decided to try here. Can you please help me?

Thanks in advance!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

如此安好 2025-02-03 03:59:10

雄辩可能会更好地做到这一点,但是正如您将其作为收藏问题所呈现的那样;

假设您的集合称为$ items

$sorted = $items->groupBy('type')
            ->map(function($group){
              return $group->sortByDesc('probability')->take(1);
            })
            ->flatten(1);

Probably better to do this in Eloquent, but as you have presented this as a collections problem;

assuming your collection is called $items

$sorted = $items->groupBy('type')
            ->map(function($group){
              return $group->sortByDesc('probability')->take(1);
            })
            ->flatten(1);

旧梦荧光笔 2025-02-03 03:59:10

我认为以下可以正常工作;

$collection->sortByDesc('probability')->groupBy('type');

按概率排序的概率比组按类型排序;

I think below can work;

$collection->sortByDesc('probability')->groupBy('type');

Sort by probability than group by type;

忘东忘西忘不掉你 2025-02-03 03:59:10

最简短:

$items = $collections
    ->sortByDesc('probability')
    ->unique('type');

The most short:

$items = $collections
    ->sortByDesc('probability')
    ->unique('type');
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文