“间接”isset()

时间:2013-08-12 09:26:59

标签: php

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

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

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

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

2 个答案:

答案 0 :(得分:6)

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

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

修改

如下面的 DaveRandom pointed out in a comment,您所能做的就是通过检查变量是否设置为止:

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

这种方法有两个缺点:

  1. 这可以通过引用传递未设置的变量,从而在调用时创建它。由于它是NULL,它仍未设置。

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

  3. 最有可能不需要这样做。所以问题仍然是你不能首先使用isset为什么更需要为你提供更好的指导。

答案 1 :(得分:-2)

当你使用set $ abc = 123来调试myCheck($ abc)时,它会获得myCheck(123)。它不是isset的任何有效参数。

您必须为函数指定一个带有变量名称的字符串:

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

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