我在mysql表中有10列。
tag1, tag2, tag3, tag4, tag5, tag6, tag7, tag8, tag9, tag10
现在,如果tag1始终有值。但是其他标签并不总是有值
如果,tag2有一个值,那么只有标签3或更高的标签才有机会获得一个值。等......
如果tag6
有值,则tag1,tag2,tag3,tag4,tag5
100%有值,但不能说tag7,tag8,tag9,tag10
知道了吗?如果不是,请在评论部分询问我。
现在,我回应这样的结果:
'.$result[$x]["tag1"].' '.$result[$x]["tag2"].' '.$result[$x]["tag3"].' '.$result[$x]["tag4"].''.$result[$x]["tag5"].''.$result[$x]["tag6"].''.$result[$x]["tag7"].''.$result[$x]["tag8"].''.$result[$x]["tag9"].''.$result[$x]["tag10"].'
结果将是这样的:
John Emma Josh Tripp Ravina Ron Chandler Joey
现在,我可以使用If语句添加逗号,但我需要使用很多if语句,这是我不想要的。像9-10 If语句一样。
除此之外的其他方式?
答案 0 :(得分:1)
我想你只想要concat_ws()
:
select concat_ws(',', tag1, tag2, tag3, tag4, tag5, tag6, tag7, tag8, tag9, tag10) as tags
注意:这假设缺失值为NULL
。如果它们是空字符串,那么构造有点复杂:
select concat_ws(',', tag1, nullif(tag2, ''), . . . ) as tags
您的数据模型非常可疑。您应该拥有单独的表,每个标记只有一行,而不是将多个标记存储在单个行的列中。然后,您可以使用group_concat()
来获得所需的输出。
答案 1 :(得分:0)
您可以使用implode()
,如下所示:
echo implode(", ", $result[$x]);
答案 2 :(得分:0)
您可以使用implode
在标记之间添加逗号,并在没有回调的情况下使用array_filter
来获取非空值的数组:
echo implode(', ', array_filter($result[$x]));
array_filter :如果没有提供回调,则将删除所有数组条目等于FALSE(请参阅转换为布尔值)。