我需要一个php函数来检查变量是否存在于函数之外,如果它不存在则为其分配一个默认值。
函数将类似于:function if_exist($argument, $default = '')
其中$argument
将是函数外的任何变量,它可以是变量的变量,$default
将是变量的默认值,如果变量不存在,非常感谢,请帮助,谢谢。
请避免在功能中使用全球范围,因为我听说这对网站的安全性不利。
答案 0 :(得分:4)
您可以$argument
pass-by-reference:
function if_exist(&$argument, $default="") {
if(!isset($argument)) {
$argument = $default;
return false;
}
return true;
}
答案 1 :(得分:0)
有两种方法可以解决这个问题。您是否正在寻找第一个非空值或者是否设置了实际变量...
第一个用例很简单......要获取非空的第一个变量的值,请定义一个函数:
function coalesce() {
$args = func_get_args();
if(is_array($args)) return null;
foreach($args as $arg) {
if($arg !== null) return $arg;
}
return null;
}
使用此功能很简单。只需使用许多不同的参数调用coalesce()
,它将始终返回它遇到的第一个非空值。
$myVar = coalesce($myVar, null, 'Hello There', 'World');
echo $myVar; // Hello There
但是,如果您正在寻找一个函数来检查变量是否已定义,并且未定义变量,那么您需要创建一个强制第一个参数作为参考的函数。
function set_default(&$variable, $defaultValue = null) {
if(!isset($variable)) {
$variable = $defaultValue;
return false;
}
return true;
}
答案 2 :(得分:0)
我不明白为什么你想要这个功能。
$a = isset($a) ? $a : "my default string";
每个人都会理解你的代码所做的事情,而不必诉诸PHP的鲜为人知的“功能”,并且必须查看你的函数体,看看它的作用。
即使它看起来像是函数调用,但事实并非如此。 isset()是语言构造!这就是不提出通知的原因。
答案 3 :(得分:0)
这个怎么样:
function setGlobalIfNotSet( $variableName, $defaultValue = false ) {
if ( ! isset( $variableName )) {
global $$variableName;
$$variableName = $defaultValue;
}
}
答案 4 :(得分:-1)
您可能正在寻找isset()
。
编辑:没有正确解释。
您可以创建一个使用isset
的功能。
function isset_default($v, $default = '') {
return isset($v) ? $v : $default;
}
用法:
$v = isset_default($v, 'somedefaultvalue');