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