将未设置的变量传递给函数

Gar*_*hby 4 php variables exists

我的代码:

function Check($Variable, $DefaultValue) {
    if(isset($Variable) && $Variable != "" && $Variable != NULL) {
        return $Variable;
    }
    else {
        return $DefaultValue;
    }
}

$a = Check(@$foo, false);
$b = Check(@$bar, "Hello");

//$a now equals false because $foo was not set.
//$b now equals "Hello" because $bar was not set.
Run Code Online (Sandbox Code Playgroud)
  1. 当变量不存在并传递给函数(抑制错误)实际传递的是什么?
  2. 这个函数可能会出现任何未定义的行为吗?
  3. 有没有更好的方法来包装变量存在的测试并从函数中提供默认值?
  4. 什么是isset()测试一个变量时,引擎盖下的检查?

编辑:

默认值是用户定义的.有时它会是一个数字,有时是一个字符串.

Mār*_*dis 8

  1. 传递NULL,引发通知错误.
  2. 不,函数只看到它的参数(它不关心它是如何调用的)
  3. 您可以轻松指定默认值 - function func($ mandatory,$ optional ='default value');
  4. 在其参数上设置函数是没有意义的,因为参数已经在函数签名中设置.