将多维数组拆分为单维

时间:2013-02-18 16:36:51

标签: php mysql arrays multidimensional-array

我在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
        )

3 个答案:

答案 0 :(得分:0)

试试这个

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

答案 1 :(得分:0)

我会做类似的事情:

         $imploded_tags = array_merge(explode("|",$tags), $imploded_tags);
    }

$imploded_tags = array_unique($imploded_tags);
echo "<pre>";
print_r($imploded_tags);

请参阅array_mergearray_unique上的手册。

但是,我认为您没有使用正确的方式来存储您的标签;它们应作为单独的值存储在单独的表中。

答案 2 :(得分:0)

当你从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);