为了账号安全,请及时绑定邮箱和手机立即绑定

Laravel - 集合,加起来唯一值出现在两列

Laravel - 集合,加起来唯一值出现在两列

PHP
慕的地6264312 2022-06-17 15:55:41
假设我有以下 PHP 代码:$data = [  [    'home' => 'Red',    'away' => 'Blue'  ],  [    'home' => 'Orange',    'away' => 'Blue'  ],  [    'home' => 'Cyan',    'away' => 'Blue'  ],  [    'home' => 'Blue',    'away' => 'Orange'  ],];$games = collect($data);我将如何使用 Laravel 的集合(或 Eloquent)来创建一个数组,在该数组中,它将通过计数输出任意一列中唯一值的次数。因此,为此,结果将如下所示:$results = [ [   'Blue': 4,   'Orange': 2,   'Red': 1,   'Cyan': 1];
查看完整描述

1 回答

?
狐的传说

TA贡献1804条经验 获得超3个赞

首先,您需要flatten()方法将多维集合转换为单个维度,然后您需要countBy()方法计算集合中值的出现次数。


$data = [

    [

        'home' => 'Red',

        'away' => 'Blue',

    ],

    [

        'home' => 'Orange',

        'away' => 'Blue',

    ],

    [

        'home' => 'Cyan',

        'away' => 'Blue',

    ],

    [

        'home' => 'Blue',

        'away' => 'Orange',

    ],

];


$games = collect($data)

    ->flatten()

    ->countBy()

    ->all();

更新

countBy()Laravel 版本提供的方法5.8。如果你的 Laravel < 5.8,你可以试试这个:


$games = collect($data)

    ->flatten()

    ->groupBy(function ($value) {

        return $value;

    })

    ->map(function ($value) {

        return $value->count();

    })

    ->all();


查看完整回答
反对 回复 2022-06-17
  • 1 回答
  • 0 关注
  • 153 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号