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

$var1='Something';
$var2='$var1';
$var3='$varNonExitant';

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

myCheck($var2) return true;
myCheck($var3) return false;
4

2 回答 2

6

isset()并不是一个真正的函数:它是一种语言结构。因此,它可以做一些常规函数无法使用的魔法,例如输入不存在的变量。

总而言之:您无法使用自定义功能复制它。

编辑:

正如DaveRandom 在下面的评论中指出的那样,您所能做的就是通过检查变量是否为 isset 来接近,例如:

function variable_isset(&$variable = NULL) {
    return isset($variable);
}

这种方法有两个缺点:

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

  2. 如果变量不存在,它将触发未定义变量通知,从而破坏优雅处理可选变量的整个概念。

这很可能不需要。所以问题仍然存在,为什么你不能isset首先使用它来为你提供更好的指导。

于 2013-08-12T09:31:13.500 回答
-2

当你调用 myCheck($abc) 并设置 $abc = 123 时,它会得到 myCheck(123)。这不是 isset 的任何有效论据。

你必须给函数一个带有变量名的字符串:

function isset_global($variable_name)
{
    return isset($GLOBALS[$variable_name]); 
}

当然,我也想知道,为什么要这样做,但只要你检查一个全局变量,它就回答了这个问题。

于 2013-08-12T09:31:28.163 回答