PHP函数检查变量是否存在于函数外部
我需要一个PHP函数来检查函数外部是否存在变量。如果不存在,则为其指定默认值 函数类似于:function if_exist$argument,$default=其中$argument将是函数之外的任何变量。它可以是变量的变量,如果变量不存在,$default将是变量的默认值PHP函数检查变量是否存在于函数外部,php,Php,我需要一个PHP函数来检查函数外部是否存在变量。如果不存在,则为其指定默认值 函数类似于:function if_exist$argument,$default=其中$argument将是函数之外的任何变量。它可以是变量的变量,如果变量不存在,$default将是变量的默认值 请避免在函数中使用全局作用域,因为我听说它不利于站点的安全。您可以创建一个函数来使用: 用法: $v = isset_default($v, 'somedefaultvalue'); 您可以创建一个要使用的函数: 用法:
请避免在函数中使用全局作用域,因为我听说它不利于站点的安全。您可以创建一个函数来使用: 用法:
$v = isset_default($v, 'somedefaultvalue');
您可以创建一个要使用的函数: 用法:
$v = isset_default($v, 'somedefaultvalue');
您可以使用$argument:
您可以使用$argument:
有两种方法可以做到这一点。您可能正在查找第一个非空值,或者是否设置了实际变量 第一个用例很简单。。。要获取第一个非空变量的值,请定义如下函数:
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;
}
有两种方法可以做到这一点。您可能正在查找第一个非空值,或者是否设置了实际变量 第一个用例很简单。。。要获取第一个非空变量的值,请定义如下函数:
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;
}
我不明白你为什么想要一个函数
$a = isset($a) ? $a : "my default string";
每个人都会理解代码的功能,而不必求助于鲜为人知的PHP特性,也不必查看函数体来了解它的功能
尽管它看起来像一个函数调用,但事实并非如此。是一种语言结构!这就是它不会引起注意的原因。我不明白您为什么想要一个函数来处理这个问题
$a = isset($a) ? $a : "my default string";
每个人都会理解代码的功能,而不必求助于鲜为人知的PHP特性,也不必查看函数体来了解它的功能
尽管它看起来像一个函数调用,但事实并非如此。是一种语言结构!这就是它不会发出通知的原因。使用以下命令:
function setGlobalIfNotSet( $variableName, $defaultValue = false ) {
if ( ! isset( $variableName )) {
global $$variableName;
$$variableName = $defaultValue;
}
}
使用以下命令:
function setGlobalIfNotSet( $variableName, $defaultValue = false ) {
if ( ! isset( $variableName )) {
global $$variableName;
$$variableName = $defaultValue;
}
}
使用globals不一定与安全性相关,但它使代码更难理解和维护……全局范围与安全性几乎没有任何关系。纯粹主义者不喜欢全局作用域,因为他们觉得它污染了名称空间,使程序难以维护。如果你不滥用它,你会没事的。使用globals不一定与安全性有关,但它会使代码更难理解和维护…Global scope与安全性几乎没有关系。纯粹主义者不喜欢全局作用域,因为他们觉得它污染了名称空间,使程序难以维护。如果你不滥用它,你会没事的。+1因为这是唯一明智的做法。我不认为它漂亮,也不认为它应该被使用,而是依赖于PHP的一些黑魔法。@Andrew:我不是这个意思。黑魔法是,你可以传递一个未识别的变量而不会触发某种错误。相反,PHP将使用null对变量进行静默初始化。对于记录,您的大写锁定处于打开状态。+1,因为这是唯一明智的做法。我不认为它漂亮,也不认为它应该被使用,而是依赖于PHP的一些黑魔法。@Andrew:我不是这个意思。黑魔法是,你可以传递一个未识别的变量而不会触发某种错误。相反,PHP将使用null对变量进行静默初始化。当我意识到他想要一个函数时,我知道我的答案是糟糕的。当我意识到他想要一个函数时,我知道我的答案是badNo,当变量为null时,isset返回false。PS:您可能想命名您的函数:-它必须是引用的原因是,PHP不会对您产生影响,您当然可以在调用范围内对其进行编辑。不,当变量为null时,isset返回false。PS:您可能想命名您的函数:-它必须是引用的原因是,PHP不会对您产生影响,您当然可以编辑它,同时仍在调用范围内发挥作用。需要进行解释。例如,为什么使用双符号$$,$$variableName?为什么?
它会被编译吗?一个解释将是正确的。例如,为什么使用双符号$$,$$variableName?它为什么要编译?