php热门标签,PHP显示最流行的标签

我有这样一个数据库:

+----+---------------------+

| 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, ")
";

}

到目前为止,这是正常的数组.

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

$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, ")
";

}

}

这给了我一个错误:

Warning: Invalid argument supplied for foreach()

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

谢谢

解决方法:

我的建议是你的数据库是normalize.然后像这样的查询变得微不足道,并且表现要好得多.

select TagID, count(*)

from EntityTag

group by TagID

order by count(*) descending

limit 5

标签:php,function,mysql,tags

来源: https://codeday.me/bug/20190726/1541714.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值