如果在不使用if语句的情况下存在变量,如何输入逗号。

时间:2017-06-21 10:45:28

标签: php mysql

我在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语句一样。

除此之外的其他方式?

3 个答案:

答案 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(请参阅转换为布尔值)。