"间接"isset()

Dr.*_*ini -1 php

function myCheck($in)
      { return isset($in); }

$var1='Something';
$var2='$var1';
$var3='$varNonExitant';
Run Code Online (Sandbox Code Playgroud)

我想要实现的是用来myCheck评估内容的存在,如下所示:

myCheck($var2) return true;
myCheck($var3) return false;
Run Code Online (Sandbox Code Playgroud)

Álv*_*lez 6

isset()实际上不是一个函数:它是一个语言结构.因此,它允许做一些常规功能无法使用的魔法,例如使用不存在的变量.

总结一下:你不能用自定义函数复制它.

编辑:

正如DaveRandom 下面的评论指出的那样,你所能做的就是通过检查变量是否设置为例:

function variable_isset(&$variable = NULL) {
    return isset($variable);
}
Run Code Online (Sandbox Code Playgroud)

这种方法有两个缺点:

  1. 这通过引用传递未设置的变量来工作,从而在调用时创建它.因为它是NULL,它仍然没有设置.

  2. 如果变量不存在,它将触发Undefined变量通知,破坏了优雅处理可选变量的整个概念.

很可能这不应该是必需的.所以问题仍然是为什么你不能isset首先使用哪个更需要为你提供更好的指导.

  • 值得注意的是,*有可能以上面显示的方式复制`isset()` - 需要注意.`function wrapped_isset(&$ var = null){return isset($ var); }`.这个函数与`isset()`完全相同,并且将始终返回相同的结果,*但是*当变量不存在时,它将被创建一个初始值为"null"的值.即使在此之后它仍将为`isset()`返回`false`,但它将被创建并出现在例如`get_defined_vars()`返回的列表中.但是,这不是我推荐的(对我来说至少)它是代码味道. (3认同)
  • @Nicholas它在其手册页上就这么说了...... (2认同)