这不是我第一次遇到此问题。我在PHP中有2个类型为string的变量。当它们都不为空时,我想要这样的东西:
echo $var1 . ', ' . $var2;
我的问题是,有时$var1
或$var2
可能为空,因此昏迷是漂浮的。我尝试这个:
echo $var1 && $var2 ? $var1 . ', ' . $var2 : $var1 || $var2;
但是,当我们处于适当状态时,它将发送1
。我希望唯一的方法不是先测试$var1 && $var2
,然后再测试$var1
,然后再测试$var2
。
预先感谢
答案 0 :(得分:10)
echo join(', ', array_filter([$var1, $var2]));
array_filter
删除所有空值,并且join
将连接符放在其余项目之间,如果有多个,则。
答案 1 :(得分:1)
您可以通过多种方式来做到这一点,例如,检查空白,使用三元等等,但是我有一种方法可以使用array_filter()
来解决此问题删除空值并使用,
内爆。然后,当任何变量为空字符串时它都不会浮动,并且会消耗多个变量。希望这会有所帮助:)
<?php
$implode = ', ';
$var1 = 'xyz';
$var2 = '';
$result = [$var1,$var2];
$filtered_result = array_filter($result);
echo implode($implode,$filtered_result);
?>
答案 2 :(得分:0)
尝试
if(!(empty($var1) && empty($var2))){
echo $var1 . ', '.$var2;
}else{
$value = !empty($var1)? $var1 : (!empty($var2)? $var2 : "both are empty");
echo $value
}
答案 3 :(得分:0)
您的正确条件使用||
运算符,该运算符返回布尔值。如果右语句或左语句为true,则将返回true(1),否则将返回false(0)
然后您必须执行类似的操作
echo ($var1 && $var2 ? $var1 . ', ' . $var2 : ($var1 ? $var1 : $var2));
请注意,必须定义$ var1(null或为空,但必须定义)