我在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_merge
和array_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);