Php 如何在数组中合并匹配字符串?

Php 如何在数组中合并匹配字符串?,php,mysql,array-push,Php,Mysql,Array Push,嗨,我现在有一段代码,可以从数据库中的每个图像检索标签。标签用逗号分隔。我将每组标记放置在数组的末尾。现在我想创建一个检索到的标记数组,但合并所有重复的标记 function get_tags() { $tag_array = array(); $query = mysql_query(" SELECT tags FROM gallery_image "); while($row = mysql_fetch_assoc($query))

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

    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];
}
函数get_tags()
{
$tag_array=array();
$query=mysql\u查询(“
选择标签
从画廊图片
");
while($row=mysql\u fetch\u assoc($query))
{
$tags=$row['tags'];
$tag_array[]=$tags;
}
echo$tag_数组[0]。
'.$tag_数组[1]。
'.$tag_数组[2]; }
您的问题不是很清楚,但可能是您需要的

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);
}

你的问题不是很清楚,但可能是你需要的

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);
}

你可能想要这样的东西:

$tags = array(
    'one,two',
    'one,three',
);

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


这样做的目的是依次使用
array\u reduce
处理每个结果行(我假设它看起来像
“tag1,tag2”
),使用
explode
将标记拆分出来,并将它们收集到一个中间数组中,每个元素只有一个标记。然后用
array\u unique
过滤掉重复的标记,以产生最终结果。

您可能需要这样的结果:

$tags = array(
    'one,two',
    'one,three',
);

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

这样做的目的是依次使用
array\u reduce
处理每个结果行(我假设它看起来像
“tag1,tag2”
),使用
explode
将标记拆分出来,并将它们收集到一个中间数组中,每个元素只有一个标记。然后用
array\u unique
过滤掉重复的标记以产生最终结果。

尝试以下方法:

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

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