首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP MYSQL如何查找mysql_fetch_assoc中是否存在变量及其在数组中的位置,然后将结果设置为变量

PHP MYSQL如何查找mysql_fetch_assoc中是否存在变量及其在数组中的位置,然后将结果设置为变量
EN

Stack Overflow用户
提问于 2013-03-06 20:44:17
回答 2查看 616关注 0票数 0

我被一些东西卡住了,我确信有一个简单的解决方案,但它正在击败我和我的基本PHP!

我有一个包含用户为视频集合输入的标签(标签)的MySQL数据库。我查询数据库以找到视频的5个最频繁出现的标签。

代码语言:javascript
复制
 $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);

如果我遍历结果,它们会被输出到浏览器,没有问题

代码语言:javascript
复制
 while($myrow = mysql_fetch_assoc($sql_get_toptags)) {
   $tagname = $myrow[TagName];
   echo $tagname;
 } 

我想要做的是找出用户刚刚输入的标记是否在最频繁输入的列表中,以及它的位置,即1。标记名我希望1和标记名是我可以重用的变量,在下面的例子中,$answer是1,$tagname显然是标记名。

这就是我所拥有的:

代码语言:javascript
复制
 $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号

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-06 20:57:55

试试这个:

代码语言:javascript
复制
$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来交换键和数组值。

票数 0
EN

Stack Overflow用户

发布于 2013-03-06 21:11:27

代码语言:javascript
复制
$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";    
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15247690

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档