从Laravel中的数组中获取出现次数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从Laravel中的数组中获取出现次数相关的知识,希望对你有一定的参考价值。
我想计算Laravel php中数组中特定值出现的次数
我试过这样的
$posts = RedditPosts::where('search_identifier', $search_id)->get();
$sentimentPost = array_count_values($posts->sentiment);
dd($sentimentPost);
我收到这个错误
Undefined property: IlluminateDatabaseEloquentCollection::$sentiment
我的表中有一个叫做“情绪”的字段,它既可以是正面的,也可以是中性的或者是负面的。
我想要做的是找出每个对象的整体情绪是正面,中性还是负面,并将该变量解析为可以显示的视图。
所以基本上我想要算一下假设,负面和中立从结果中出现多少次,这样我就可以将它们相互比较,并找出整体情绪是积极的,消极的还是中性的。在DB我有很多列,即帖子,情绪等。
array_count_values是我发现能够做到的最接近的事情。还有另外一种方法吗?
答案
如果我明白你想要什么,解决这个问题的方法是:
$sentiments = [
'positive' => 0,
'neutral' => 0,
'negative' => 0,
];
foreach ($posts as $post) {
$sentiments[$post->sentiment]++;
}
dd($sentiments);
希望能帮助到你...
另一答案
只需调用该集合的count
方法:
$count = $posts->count();
如果您只需要计数,则可以直接在数据库中执行:
$count = RedditPosts::where('search_identifier', $search_id)->count();
如果您想要计算每个情绪,您可以按情绪分组,然后将值映射到他们的计数:
$counts = $posts->groupBy('sentiment')->map->count();
...这会给你每个情绪的计数:
dd($counts->all()); // ['positive' => 4, 'negative' => 2, 'neutral' => 9]
或者,您可以直接在数据库中执行所有分组和计数:
RedditPosts::where('search_identifier', $search_id)
->selectRaw('sentiment, COUNT(*) as count')
->groupBy('sentiment')
->pluck('count', 'sentiment');
...将返回与上面代码相同的关联数组。
以上是关于从Laravel中的数组中获取出现次数的主要内容,如果未能解决你的问题,请参考以下文章