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

Posted

技术标签:

【中文标题】缩短检查多个变量是不是为空的方式【英文标题】:Shorten the way multiple variables are checked if they are empty缩短检查多个变量是否为空的方式 【发布时间】:2019-10-11 00:17:52 【问题描述】:

我正在检查 11 个变量是否为空,并在此基础上向数组添加一个值。变量不在数组中,如果可能的话,我想保留它们。

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


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


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

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

【问题讨论】:

【参考方案1】:

你可以使用三元运算符

如果你可以这样做,最好循环遍历你的变量

使用三元运算符:

$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 : ' - ';

【讨论】:

我会使用最后一个示例,因为如果默认值存在差异,它最易读且易于维护。【参考方案2】:

如果变量按顺序命名,您可以使用变量变量循环它们。

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

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

查看实际代码:https://3v4l.org/240kA

【讨论】:

以上是关于缩短检查多个变量是不是为空的方式的主要内容,如果未能解决你的问题,请参考以下文章

检查 jquery 的多个输入的值是不是为空的更短方法

检查PHP数组是不是为空的最佳方法[关闭]

如何检查Lua中的值是不是为空?

PHP中判断变量值是不是为空的问题

如何检查三个变量中是不是只有一个不为空?

检查可为空的布尔值是不是为空[重复]