gpt4 book ai didi

PHP 显示最流行的标签

转载 作者:可可西里 更新时间:2023-11-01 07:50:09 25 4
gpt4 key购买 nike

我有这样一个数据库:

+----+---------------------+
| id | tags |
+----+---------------------+
| 1 | test1, test2, test3 |
| 2 | test1, test2, test3 |
| 3 | test1, test2, test3 |
| 4 | test1, test2, test3 |
| 5 | buh1, buh2, buh3 |
+----+---------------------+

现在我想显示这个数据库中最流行的标签。我有一个函数,它适用于这样的数组:

$tag_array = array( 'test1, test2 test, test3', 'test2, test4, test2', 'buh, buh2, buh3' );

函数:

function popularTags($tag_array) {
$p = array();
foreach($tag_array as $tags) {
$tags_arr = array_map('trim', explode(',', $tags));
foreach($tags_arr as $tag) {
$p[$tag] = array_key_exists($tag, $p) ? $p[$tag]+1 : 1;
}
}
arsort($p);
return $p;
}

这是显示最受欢迎标签的方法:

foreach(popularTags($tag_array) as $tag=>$num)
{
echo $tag, " (", $num, ")<br />";
}

到目前为止,这对普通数组有效。

现在,我想从数据库中获取标签,所以我从数据库中提取值并运行如下函数:

$result = mysql_query("select * from DB ORDER BY date DESC");

while($row = mysql_fetch_array($result)){

$tag_array = $row["$tags"];

foreach(popularTags($tag_array) as $tag=>$num)
{
echo $tag, " (", $num, ")<br />";
}

}

虽然这给了我一个错误:

Warning: Invalid argument supplied for foreach()

所以我的问题是如何使用此功能显示数据库中最受欢迎的标签?

谢谢

最佳答案

我的建议是你normalize你的数据库。然后像这样的查询变得微不足道,并且性能更好。

select TagID, count(*)
from EntityTag
group by TagID
order by count(*) descending
limit 5

关于PHP 显示最流行的标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7435785/

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