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

我有三个变量:

$var1
$var2
$var3

我实际上正在寻找检查这三个变量中只有一个不为空而另外两个变量是否为空的最佳方法。

这有可能只用一个来做到这一点吗?如果没有,那么最好的方法是什么?if

变量都包含文本。


答案 1

您可以使用 将变量转换为数组并使用 排除空变量。然后在过滤后使用。array_filter()count()

if(count(array_filter(array($var1,$var2,$var3)))==1){
  //only 1 variable is not empty
}

检查小提琴链接


答案 2

布尔值返回 0 和 1,array_sum()

if (array_sum(array(empty($var1), empty($var2), empty($var3))) == 1)
{
    echo "one is empty" ;
}

ETA:这是一种更简单的方法:

if (!empty($var1) + !empty($var2) + !empty($var3) == 1) {
    echo "1 is not empty" ;
}

ETA 2:我们不需要负面信号

if (empty($var1) + empty($var2) + empty($var3) == 2) {
    echo "1 is not empty" ;
}

推荐