gpt4 book ai didi

php - Mysql数组数据操作

转载 作者:行者123 更新时间:2023-11-29 09:11:00 25 4
gpt4 key购买 nike

我有一个带有 tags 列的 articles 表。列中的每一行都包含一个如下所示的字符串:

tag1, tag3, tag5, tag0//用逗号分隔

或者

tag1 tag6 tag5 tag8//用空格分隔

请注意,“标签”后面附加的数字表示不同的单词。我需要比较每一行是否有重复项并返回单词重复的次数,然后将其放入循环中,例如:

  • 标签0(1次)
  • 标签1(2次)
  • 标签3(1次)
  • 标签6(1次)
  • 标签8(1次)

经过 6 个小时的失败尝试,如果您能帮助我,我将衷心感谢您。我之前确实问过同样的问题,但太早接受了答案。 Mysql Results and array manipulation

最佳答案

这就是非规范化数据库设计失败的原因 - 您失去了轻松执行关系查询的任何能力。鉴于与“外部”编程语言相比,SQL 数据库具有可怕的字符串操作功能,因此您需要将所有这些标记字符串提取到 PHP 中并在那里进行解构/计数。

如果您的数据库已正确规范化,并使用单独的子表来链接标签<->文章,则查询将变得微不足道

SELECT tag.name, count(articles_tags.article_id) AS cnt
FROM tags
LEFT JOIN article_tags ON tags.id = articles_tags.tag_id
GROUP BY tag.id
ORDER BY tag.name

现在你被困住了

SELECT id, tags from ARTICLES

$tag_count = array();
while($row = mysql_fetch_assoc($result)) {
$tags = preg_split('/[ ,]/', $row['tags']);
foreach($tags as $tag) {
$tag_count[$tag]++;
}
}
sort($tag_count);

关于php - Mysql数组数据操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5558212/

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