将多维数组分解为一维



我在mySQL中有一些字段,目前正像这样存储在字段"tags"下

Shopping|Health & Beauty
Coffee|Shopping

我想做的是循环使用它来创建一个一维数组,并只获取唯一的值。

我的查询从TABLE中选择DISTINCT标记,并运行如下循环:

    while ($row_tags = mysql_fetch_assoc($r_tags)) { 
    $tags = $row_tags['tags'];
    $imploded_tags[] = explode("|",$tags);
    }
echo "<pre>";
print_r($imploded_tags);

print_r的结果显示它是一个多维数组。我试图以不同的方式重新开发和内爆它,但我没能取得任何成功。有没有一种方法可以将其创建为一维数组?并不是所有的标签都有相同数量的标签,用|分隔,所以我似乎无法让它与我在另一篇StackOverflow文章中尝试的函数配合使用。如有任何帮助,我们将不胜感激!

输出:

Array
(
    [0] => Array
        (
            [0] => Shopping
            [1] => Health & Beauty
        )
    [1] => Array
        (
            [0] => Coffee
            [1] => Shopping
        )

尝试这个

while ($row_tags = mysql_fetch_assoc($r_tags)) { 
$tags = $row_tags['tags'];
$tags = explode("|",$tags);
 foreach($tags as $v){
  $imploded_tags[] = $v;
 }
}

我会做一些类似的事情:

         $imploded_tags = array_merge(explode("|",$tags), $imploded_tags);
    }
$imploded_tags = array_unique($imploded_tags);
echo "<pre>";
print_r($imploded_tags);

请参阅关于array_mergearray_unique的手册。

然而,我确实认为你没有使用正确的方式来存储你的标签;它们应该作为单独的值存储在一个单独的表中。

实际情况是,当您从MySQL中获取行时,首先基本上是在一个数组中获取一堆数据,这就是为什么您必须循环它们。

使用内爆函数,您需要获取一堆字符串,然后获取另一个数组集,然后将其附加到外部数组。

如果你真的想在不进行多维操作的情况下获得一维数组,那么你真正需要做的就是在这个循环中使用另一个循环。

    $all_tags = array();
    while ($row_tags = mysql_fetch_assoc($r_tags)) { 
        $tags = $row_tags['tags'];
        $imploded_tags[] = explode("|",$tags);
        for($i = 0; $i < count($imploded_tags); $i++) {
            $all_tags[] = $imploded_tags[$i]
        }
    }
    print_r($all_tags);

相关内容

  • 没有找到相关文章

最新更新