我被一些东西卡住了,我确信有一个简单的解决方案,但它打败了我和我的基本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和tagname是我可以重用的变量,在下面的例子中$answer是1 $tagname显然是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垃圾
两个垃圾
3垃圾
4垃圾
5个垃圾
1火山
2火山
3火山
4火山
5火山
1太棒了
2太棒了
3太棒了
4太棒了
5太棒了
你的标签是no。5
我已经尝试了无数的循环组合,但还是得不到我想要的。
在我的脑海中$tagname[]应该是一个数组和键在括号中的数字,例如tagname[2],它将在列表中排名第三。那么if ($tag==$tagname[2]){//echo " the tag is 3rd most popular";但是$tagname只是一行,如果我尝试在while循环中创建一个数组,我只是在每次迭代中覆盖最后一个条目。
我非常感谢你的建议。
我想看到的输出(即如果$tag=explosion)
1胡子2爆炸3垃圾4火山5的
你的标签是no。2
试试这个:
$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来交换键和数组值
$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";
}