PHP获取字符串并检查该字符串是否作为变量存在

PHP获取字符串并检查该字符串是否作为变量存在,php,variables,dynamic-variables,Php,Variables,Dynamic Variables,我有一个有趣的情况。我正在使用一个包含在多个页面上的表单(为了简单和减少重复),并且该表单在某些区域填充了来自DB的值。但是,并非所有这些值都始终存在。例如,我可以做一些事情,效果如下: <?php echo set_value('first_name', $first_name); ?> 下面是一个示例用法: <?php if (varIsset('user_id') == 100) { // do something } ?> 我会自己使用数组并检查数组

我有一个有趣的情况。我正在使用一个包含在多个页面上的表单(为了简单和减少重复),并且该表单在某些区域填充了来自DB的值。但是,并非所有这些值都始终存在。例如,我可以做一些事情,效果如下:

<?php echo set_value('first_name', $first_name); ?>
下面是一个示例用法:

<?php 
if (varIsset('user_id') == 100) {
    // do something
}
?>

我会自己使用数组并检查数组键(或初始化所有变量…),但对于您的函数,您可以使用如下内容:

function varIsset($var)
{   
    global $$var;
    return isset($$var) && !empty($$var);
}
function valueVar($var)
{   
    global $$var;
    return (isset($$var) && !empty($$var)) ? $$var : NULL;
}
请查看上的手册。您需要使用
global$$var来绕过范围问题,所以这是一个有点讨厌的解决方案。看到一个正在工作的人

编辑:如果需要返回值,可以执行以下操作:

function varIsset($var)
{   
    global $$var;
    return isset($$var) && !empty($$var);
}
function valueVar($var)
{   
    global $$var;
    return (isset($$var) && !empty($$var)) ? $$var : NULL;
}

但老实说,在变量可能存在或可能不存在时使用这样的变量对我来说似乎有点错误。

引入您想要搜索的上下文是一种更好的方法,例如:

function varIsset($name, array $context)
{
    return !empty($context[$name]);
}
在进行渲染之前,将使用数据库结果填充上下文。顺便说一句,
empty()
对字符串值
“0”
有一个小警告;在这些情况下,使用此逻辑可能是更好的方法:

return isset($context[$name]) && strlen($name);
尝试:



我已经尝试了变量,但运气不好。此函数将存在于帮助文件中。@K_G我忘记了
全局
声明,请参阅我添加的工作示例。谢谢您提供的工作示例。不过我还是得到了一个错误,并且我知道变量是在我正在查看的控制器->视图中设置的。@K_G可能是一个范围问题,我只是在检查全局范围。不看就很难说。是不是
isset($$var)&&!空($$var)
相当于
!空($$var)