我想要一种简化将两个值连接在一起的if / else语句的方法,但也会在使用变量之前检查空值。
例如:
if (isset($A,$B)) {
$C = $A . $B;
}
elseif(isset($A)) {
$C = $A;
}
elseif(isset($B)) {
$C = $B;
}
在将$A
与$B
连接之前,我需要确保NULL
都不是$C
。如果它们都包含值,那么我想将连接分配给变量$C
。如果任一值为null,那么我只想将一个值分配给$D
。
当我只有两个变量时,上面的工作正常,但如果添加了第三个变量$C
,我需要连接到{{1}}并仍然检查空值。然后我需要首先检查ABD,然后是AB,然后是BD,然后是A,然后是B,然后是D.然后是D.它会变得非常不守规矩。
那么如何在必要时简化代码并允许将来添加更多变量?
答案 0 :(得分:4)
以下内容如何:
<?php
$a=NULL;
$b="hello ";
$c=NULL;
$d="world\n";
$all = implode(array($a,$b,$c,$d));
echo $all;
?>
打印
hello world
没有任何错误。这是@ wor10ck发表的评论的实现 - 但他似乎没有跟进一个完整的答案/例子,我认为他的建议值得充实。
对于没有阅读评论的人来说,编辑 - @Keven最终使用
$result = implode(array_filter($array));
这是一种很好的强大方法来删除数组中的NULL元素。
答案 1 :(得分:2)
$C = (isset($A) ? $A : '') . (isset($B) ? $B : '') . (isset($D) ? $D : '');
答案 2 :(得分:2)
你可能会找到这个有用的
$C = "";
$C .= (isset($A) ? $A : "").(isset($B) ? $B : "");
如果语句为真,则问号运算符返回:符号前面的左侧部分,如果为false,则返回右侧。我想 if 块中的嵌套语句更加优化。
答案 3 :(得分:0)
<?php
// I assume $res is the variable containing the result of the concatenations
$res = '';
if(isset($a))
$res .= $a;
if(isset($b))
$res .= $b;
if(isset($c))
$res .= $c;
// ...
答案 4 :(得分:0)
$A = 'a';
$B = 'b';
$C = '';
$C .= isset($A) ? $A : '';
$C .= isset($B) ? $B : '';
$C .= isset($D) ? $D : '';
echo $C;