我被一些东西卡住了,我确信有一个简单的解决方案,但它正在击败我和我的基本PHP!
我有一个包含用户为视频集合输入的标签(标签)的MySQL数据库。我查询数据库以找到视频的5个最频繁出现的标签。
$sql_get_toptags=mysql_query("SELECT TagName,Count(TagName) AS TagFreq
FROM Tags
Where vidID='$vidid'
Group BY TagName
Order By Count(TagName) DESC limit 5",$db);如果我遍历结果,它们会被输出到浏览器,没有问题
while($myrow = mysql_fetch_assoc($sql_get_toptags)) {
$tagname = $myrow[TagName];
echo $tagname;
} 我想要做的是找出用户刚刚输入的标记是否在最频繁输入的列表中,以及它的位置,即1。标记名我希望1和标记名是我可以重用的变量,在下面的例子中,$answer是1,$tagname显然是标记名。
这就是我所拥有的:
$sql_get_toptags=mysql_query("SELECT TagName,Count(TagName) AS TagFreq
FROM Tags
Where vidID='$vidid'
Group BY TagName
Order By Count(TagName) DESC limit 5",$db);
while($myrow = mysql_fetch_assoc($sql_get_toptags)) {
$tagname = $myrow[TagName];
for ($i=1; $i<=5; $i++){
echo $i,$tagname;
echo "<br>";
if ($tag==$tagname){
$TopTag=$tagname;
$answer=$i;
}
}
}
if (($TopTag!='') && ($answer!='')){
echo "your tag is no.".$answer;
}这不管用。下面是它输出内容的一个示例:
1胡子
2胡子
3胡须
4胡须
5胡子
1爆炸
2爆炸
3爆炸
4爆炸
5爆炸
1垃圾
2垃圾
3垃圾
4垃圾
5垃圾
1火山
2火山
3火山
4火山
5火山
1太棒了
2太棒了
3太棒了
4太棒了
5太棒了
你的标签是5号
我已经尝试了一百万个循环的组合,我不能得到我想要的。
在我看来,$tagname[]应该是一个数组,键应该是括号中的数字,例如tagname2,它应该是列表中的第三位。所以如果($tag==$tagname2){ //echo“那个标签是第三受欢迎的”;}但是$tagname只有一行,如果我尝试在while循环中创建一个数组,我就会在每次迭代中覆盖最后一个条目。
我真的很感谢你的建议。
我想要查看的输出(即如果为$tag=explosion)
1胡子2爆炸3垃圾4火山5酷
你的标签是2号
发布于 2013-03-06 20:57:55
试试这个:
$sql_get_toptags=mysql_query("SELECT TagName,Count(TagName) AS TagFreq FROM GT_Tags Where VidID='$vidid' Group BY TagName Order By Count(TagName) DESC limit 5",$db);
while($myrow = mysql_fetch_assoc($sql_get_toptags)) {
$tagnames[] = $myrow['TagName'];
}
foreach($tagnames as $key=>$name){
echo ($key+1)." ".$name;
$reversed[$name]=$key+1;
}
if(isset($reversed[$tag])) {
echo "Your tag is no. ".$reversed[$tag];
} else {
echo "Your tag is not in the top 5";
}您还可以使用array_flip来交换键和数组值。
发布于 2013-03-06 21:11:27
$sql_get_toptags=mysql_query("SELECT TagName,Count(TagName) AS TagFreq FROM GT_Tags Where VidID='$vidid' Group BY TagName Order By Count(TagName) DESC limit 5",$db);
$tagNames = array();
while($myrow = mysql_fetch_assoc($sql_get_toptags)) {
$tagNames[] = $myrow['TagName'];
}
$tagNo = array_search($tag, $tagNames);
if($tagNo) {
echo "Your tag is no. " . $tagNo;
} else {
echo "Your tag is not in the top 5";
}https://stackoverflow.com/questions/15247690
复制相似问题