PHP-如果设置了变量值,是否有方法获取变量值?

PHP-如果设置了变量值,是否有方法获取变量值?,php,function,isset,unset,notice,Php,Function,Isset,Unset,Notice,我总是发现自己在写这样的东西: if(isset($var)) { DoSomethingWith($var); } else { DoSomethingWith(null); } 或 我的问题就是: 有没有一种方法可以编写get\u var\u if\u set()函数,这样您就可以简单地编写 DoSomethingWith(get_var_if_set($var)); /// and DoSomethingWith(get_var_if_set($arr["key"]));

我总是发现自己在写这样的东西:

if(isset($var))
{
    DoSomethingWith($var);
}
else
{
    DoSomethingWith(null);
}

我的问题就是:

有没有一种方法可以编写get\u var\u if\u set()函数,这样您就可以简单地编写

DoSomethingWith(get_var_if_set($var));
/// and
DoSomethingWith(get_var_if_set($arr["key"]));
…如果$var不存在或$arr没有“key”的设置值,则不通知

我想应该是这样的:

function get_var_if_set($a)
{
    return (isset($a) ? $a : null);
}
但这不起作用,因为使用未设置的变量调用get_var_if_set()总是会生成一个通知,所以可能需要一些技巧

谢谢大家

编辑 删除答案的用户建议通过引用传递变量,因为如果$variable不存在,PHP将传递null

因此,这将是完美的,看看这些解决方案(可能是):

注:凝聚操作员由

问题在于,它们以某种方式在return语句中初始化传递的变量。
我们不希望这样。

问题不在于var本身,而在于数组的键
key

DoSomethingWith(get_var_if_set($arr["key"]))
因此,唯一的解决方案是检查您要查找的数组和密钥

function get_var_if_set($a, $key = null)
{
    if(is_array($a) && array_key_exists($key, $array)) {
        return $a[$key]; 
    } else {
          return (isset($a) ? $a : null);
    }
}

如果使用PHP7.0+,则可以使用空合并运算符

return $a ?? null;

注意:操作员检查变量是否存在且不为空。因此,如果变量已设置但为空,它将返回空变量。

在新文档中,比较
echo$avs
echo@$a。尽管我认为抑制错误通常不是一件好事,但您可以简单地使用:
DoSomethingWith($var??null)
DoSomethingWith($var?:null)
@LucasKrupinski变量前面的
@
有什么用?@AntonisTsimourtos-
@
@AntonisTsimourtos用于抑制错误和警告这很聪明,但是!问题是当您使用($some_unexistent_参数)执行call_a_函数_时;PHP生气了。我想要一个“神奇的函数”,告诉PHP“不管我传递了什么,也不管它是否存在,我都是为处理未定义的索引和未知变量而构建的。”函数isset()的酷之处在于,你可以给它一些不存在的东西,最多只能得到false;PHP知道isset()可能接收不存在的变量,但不会通知它。我想要一种isset的包装函数,它直接给出[value或null],而不是[true或false]。您的解决方案忽略了一个问题,即如果调用get\u var\u if\u set($inexistent\u var),PHP会通知您($inexistent\u var)不存在。
function get_var_if_set($a, $key = null)
{
    if(is_array($a) && array_key_exists($key, $array)) {
        return $a[$key]; 
    } else {
          return (isset($a) ? $a : null);
    }
}
return $a ?? null;