如何检查是否设置了任何变量?

问题描述:

checking if all are set

if(
    isset($var1) &&
    isset($var2) &&
    isset($var3)
){}

can be re-written as

if(isset($var1,$var2,$var3)){}

but what's the syntax for if any are set?

if(
    isset($var1) ||
    isset($var2) ||
    isset($var3)
){}

Looks ugly; is there any better way to write this?

检查 all em>是否已设置 p>

  if(
 isset($ var1)&& 
 isset($ var2)&& 
 isset($ var3)
){} 
  code>  pre> 
  
 

可以重写为 p>

  if(isset($ var1,$ var2,$ var3)){} 
  code>  pre  > 
 
 

但if 任何 em>的语法是什么? p>

  if(
 isset($ var1)||  
 isset($ var2)|| 
 isset($ var3)
){} 
  code>  pre> 
 
 

看起来很丑陋; 有没有更好的方法来写这个? p> div>

You have to pass strings instead of the variables, but for fun:

if(compact('var1', 'var2', 'var3')) {
    echo 'one or more is set';
} else {
    echo 'none are set';
}

I guess one could write a simple function to use, but there's probably a cleaner way.

function anyset(...$vars){
    foreach($vars as $var){
        if(isset($var)){
            return true;
        }
    }
    return false;
}

if(anyset($var1,$var2,$var3)){}