gpt4 book ai didi

php - 计算行出现次数并打印它们

转载 作者:行者123 更新时间:2023-11-29 04:16:39 28 4
gpt4 key购买 nike

名为 Tags 的 MySQL 表包含 2 列:tags 和 video_id,行数超过 100k。它们都不是主键,这意味着标签列中的值可能会因不同的 video_id 出现几次,例如:

column names:  |tags|video_id|
values: tag1 video1
tag1 video2
tag2 video4
tag2 video5
tag2 video6

如何计算每个标签的所有出现次数并打印出来?像这样的东西:

tag1 (2 Videos)

tag2 (3 Videos)

我的网站基于 CakePHP-3,我从表中获取行的方式是这样的:

$query = $this->Tags->find('all');
$tags = $this->paginate($query);

变量标签现在有了结果,这就是我打印它们的方式:

foreach ($tags as $tag):
echo $tag->tags."<br>";
endforeach;

最佳答案

您可以利用基本的 SQL 逻辑来做到这一点,例如计算 video_id(或 *,这在某些情况下可能会给您带来更好的性能)和分组依据标签

$query = $this->Tags->find();
$query = $query
->select([
'tags',
'count' => $query->func()->count('video_id')
])
->group('tags');

$tags = $this->paginate($query);

这将创建一个类似于以下的查询:

SELECT tags, COUNT(video_id) as count
FROM tags
GROUP BY tags

生成的实体将拥有 count 属性,您可以像访问任何其他属性一样访问该属性。这是一个小例子,另外使用复数感知翻译功能(当然不是必需的,但可能有用):

foreach ($tags as $tag):
echo $tag->tags . ' (' .
__n('{0} Video', '{0} Videos', $tag->count, $tag->count) .
')<br>';
endforeach;

另见

关于php - 计算行出现次数并打印它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41489972/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com