缩短检查多个变量是否为空的方式

时间:2019-05-24 11:37:18

标签: php if-statement while-loop

我正在检查11个变量是否为空,并基于此将一个值添加到数组。变量不在数组中,我想尽可能保留它们。

if (!empty($var1)) {
  $Data[] = $var1;
} else {
  $Data[] = ' - ';
}

if (!empty($var2)) {
  $Data[] = $var2;
} else {
  $Data[] = ' - ';
}

if (!empty($var3)) {
  $Data[] = $var3;
} else {
  $Data[] = ' - ';
}

是否有更好/更短的方法来完成上述操作?

2 个答案:

答案 0 :(得分:4)

您可以使用三元运算符

如果可以的话,最好是遍历变量

使用三元运算符:

$variables = [ $var1, $var2, $var3 ]
foreach ($variables as $var){
    $Data[] = !empty($var) ? $var: ' - ';
}

使用if / else语句:

$variables = [ $var1, $var2, $var3 ]
foreach ($variables as $var){
    if( !empty($var) ){
        $Data[] = $var;
    }else{
        $Data[] = ' - ';
    }

}

但是,如果您仍然不能并且仍然希望对每个变量分别进行操作,则:

$Data[] = !empty($var1) ? var1 : ' - ';
$Data[] = !empty($var2) ? var1 : ' - ';
$Data[] = !empty($var3) ? var1 : ' - ';

答案 1 :(得分:2)

如果按这样的顺序命名变量,则可以使用变量变量循环它们。

$i = 1;
while(isset(${"var" . $i})){ 
    if (!empty(${"var" . $i})) 
    {
        $Data[] = ${"var" . $i};
    } else {
        $Data[] = ' - ';
    }
    $i++;
}

这意味着您不需要像接受的答案那样将它们手动添加到数组中,并且如果有一天出现$var12,那么此代码将自动添加它们。

查看运行中的代码:
https://3v4l.org/240kA