Php Mysql结果和数组操作

Php Mysql结果和数组操作,php,mysql,arrays,Php,Mysql,Arrays,我被困在一个问题上,希望得到一些指导。我使用的是一个旧系统,它的代码编写得非常糟糕,并且没有对用户输入进行任何验证或清理,因此我使用的数据库有点错误 我对一个名为“标签”的专栏有意见,该专栏用于文章的标签。但每一行都是这样的,并且各不相同: 标记tag1 tag2 tag3 或 tag1、tag2、tag 但我需要将它们组合起来,并将它们放入一个数组中,该数组按每次出现的次数列出它们,如下所示: 标签(2) tag1(2) tag2(2) tag3(1) 因为我对php不是最精明的,我不确定

我被困在一个问题上,希望得到一些指导。我使用的是一个旧系统,它的代码编写得非常糟糕,并且没有对用户输入进行任何验证或清理,因此我使用的数据库有点错误

我对一个名为“标签”的专栏有意见,该专栏用于文章的标签。但每一行都是这样的,并且各不相同:

标记tag1 tag2 tag3

tag1、tag2、tag

但我需要将它们组合起来,并将它们放入一个数组中,该数组按每次出现的次数列出它们,如下所示:

  • 标签(2)
  • tag1(2)
  • tag2(2)
  • tag3(1)
因为我对php不是最精明的,我不确定我是否正确地处理了这个问题

我对在这种规模上操纵阵列还不熟悉,这就是为什么我在这一点上束手无策的原因。您可以查看下面我正在做的事情的示例:

  $sql = "SELECT tags, approved FROM articles WHERE approved = '1' ";
  $result = mysql_query($sql);

 while( $rows = mysql_fetch_array($result) ) { 
  $arr = $rows['tags'];
  $arr = str_replace(", ", " ", $arr); // attempting to clean up the data, so that each word appends with a space.
  $arr = str_replace(" ", " ", $arr);

  // Don't know what to do next, or if this is even the right way to do it.

}
感谢您的帮助


谢谢,Lea,也许这会有帮助。修改代码,使每个查询都有一个
$tagArr
。如果您需要一个完整的标签数组,它可能会有点不同,但是可以使用以下代码轻松地进行编码

while( $rows = mysql_fetch_array($result) ) { 
  $arr = $rows['tags'];
  $arr = str_replace(", ", " ", $arr); // attempting to clean up the data, so that each word appends with a space.

  // Don't know what to do next, or if this is even the right way to do it.

  $tagArr = array();
  $current_tags = explode(" ", $arr);
  foreach($current_tags as $tag) {
    if(!array_key_exists($tag, $tagArr)) {
      $tagArr[$tag] = 1;
    } else {
      $tagArr[$tag] = $tagArr[$tag]++;
    }
  }

  // now $tagArr has the tag name as it's key, and the number of occurrences as it's value
  foreach($tagArr as $tag => $occurrences) {
    echo $tag . '(' . $occurrences . ')<br />';
  }
}
while($rows=mysql\u fetch\u array($result)){
$arr=$rows['tags'];
$arr=str_replace(“,”,“”,$arr);//试图清理数据,以便每个单词都附加一个空格。
//不知道下一步该做什么,或者这是否是正确的方法。
$tagArr=array();
$current_tags=explode(“,$arr”);
foreach($当前标签为$标签){
如果(!array_key_存在($tag,$tagArr)){
$tagArr[$tag]=1;
}否则{
$tagArr[$tag]=$tagArr[$tag]+;
}
}
//现在$tagArr将标记名作为其键,将出现次数作为其值
foreach($tagArr作为$tag=>$occurrents){
回显$tag.'('.$occurrencess.')
; } }
我想我被卡住了,因为脚本为每一行输出一个数组,我不知道如何操作,而且我过去一个小时的所有尝试都失败了。您可以使用
explode
函数将字符串转换为数组。@fructedWithFormsDesigner-True,但这并不涉及每行数据的格式化方式。它将其放入一个数组中,如:array(){[0]=>tag,tag1,tag3,tag4[1]=>tag,tag2,tag6,tag7}不需要str_将空格替换为空格行。@Lea更新了代码。我刚刚遍历了新的
$tagArr
数组并回显了信息。还删除了不需要的
str\u replace
.aw.-我现在明白了。谢谢你的帮助:)