假设我有以下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
];
首先,您需要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
获得。如果你的拉拉维尔< 5.8
,你可以试试这个:
$games = collect($data)
->flatten()
->groupBy(function ($value) {
return $value;
})
->map(function ($value) {
return $value->count();
})
->all();