从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中的数组中获取出现次数的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Laravel 中的数组中获取特定的数组值

获取数组中出现次数最多的项

从 laravel 中的数组中获取特定值

如何从laravel中的数组中获取键名

js 一个数组各元素出现的次数,并输出,怎么写代码

如何使数组从laravel中的数据库中获取数据