我想计算 Laravel PHP 数组中特定值出现的次数
我已经尝试过这样的
$posts = RedditPosts::where('search_identifier', $search_id)->get();
$sentimentPost = array_count_values($posts->sentiment);
dd($sentimentPost);
Run Code Online (Sandbox Code Playgroud)
我收到这个错误
Undefined property: Illuminate\Database\Eloquent\Collection::$sentiment
Run Code Online (Sandbox Code Playgroud)
我的表中有一个名为“情绪”的字段,它可以是积极的、中性的或消极的。
我想要做的是找出每个对象的整体情绪是积极、中性还是消极,并将该变量解析为可以显示的视图。
所以基本上我想计算结果中出现了多少次正面、负面和中性的结果,这样我就可以将它们相互比较并找出整体情绪是正面、负面还是中性。在数据库中,我有很多列,即帖子、情绪等。
array_count_values 是我发现能够做到这一点的最接近的东西。还有别的办法吗?
只需调用集合的count方法:
$count = $posts->count();
Run Code Online (Sandbox Code Playgroud)
如果您只需要计数,可以直接在数据库中执行:
$count = RedditPosts::where('search_identifier', $search_id)->count();
Run Code Online (Sandbox Code Playgroud)
如果您想要每种情绪的计数,您可以按情绪分组,然后将值映射到它们的计数:
$counts = $posts->groupBy('sentiment')->map->count();
Run Code Online (Sandbox Code Playgroud)
...这将为您提供每种情绪的计数:
dd($counts->all()); // ['positive' => 4, 'negative' => 2, 'neutral' => 9]
Run Code Online (Sandbox Code Playgroud)
或者,您可以直接在数据库中进行所有分组和计数:
RedditPosts::where('search_identifier', $search_id)
->selectRaw('sentiment, COUNT(*) as count')
->groupBy('sentiment')
->pluck('count', 'sentiment');
Run Code Online (Sandbox Code Playgroud)
...这将返回与上面的代码相同的关联数组。
| 归档时间: |
|
| 查看次数: |
3353 次 |
| 最近记录: |