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$a代码>vsecho@$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;