【问题标题】:How do i merge matching strings in an array?如何合并数组中的匹配字符串?
【发布时间】:2012-01-15 14:20:21
【问题描述】:

您好,我目前有这段代码可以从数据库中的每个图像中检索标签。标签用逗号分隔。我将每组标签放在数组的末尾。现在我想创建一个检索到的标签数组,但合并所有重复项。

    function get_tags()
{
    $tag_array = array();
    $query = mysql_query("
    SELECT tags 
    FROM gallery_image
    ");

    while($row = mysql_fetch_assoc($query))
    {
        $tags = $row['tags'];
        $tag_array[] = $tags;

    }

    echo $tag_array[0] . '<br>' . $tag_array[1] . '<br>' .$tag_array[2];
}

【问题讨论】:

    标签: php mysql array-push


    【解决方案1】:

    您的问题不是很清楚,但array_unique 可能是您需要的?

    function get_tags()
    {
      $query = mysql_query('SELECT tags '.
                           'FROM gallery_image');
      $tag_array = array();
      while($row = mysql_fetch_assoc($query))
        $tag_array = array_merge($tag_array, explode(',', $row['tags']));
    
      return array_unique($tag_array);
    }
    

    【讨论】:

      【解决方案2】:

      你可能想要这样的东西:

      $tags = array(
          'one,two',
          'one,three',
      );
      
      $result = array_unique(array_reduce($tags, 
                                          function($curr, $el) {
                                              return array_merge($curr, explode(',', $el));
                                          },
                                          array()));
      

      See it in action

      这样做是用array_reduce 依次处理每个结果行(我假设它看起来像"tag1,tag2"),用explode 拆分标签并将它们收集到一个中间数组中,每个元素只有一个标签.然后用array_unique 过滤掉重复的标签以产生最终结果。

      【讨论】:

        【解决方案3】:

        试试这个:

        $unique_tags = array();
        foreach ($tag_array as $value) {
            $unique_tags = array_merge($unique_tags, explode(",", $value);
        }
        $unique_tags = array_unique($unique_tags);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-04-28
          • 1970-01-01
          • 2018-09-27
          • 1970-01-01
          • 2022-10-14
          • 1970-01-01
          • 2012-12-09
          相关资源
          最近更新 更多