使用空检查简化If / Else语句

时间:2014-06-18 20:41:13

标签: php if-statement

我想要一种简化将两个值连接在一起的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.它会变得非常不守规矩。

那么如何在必要时简化代码并允许将来添加更多变量?

5 个答案:

答案 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;