首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将未设置变量传递给函数

将未设置变量传递给函数
EN

Stack Overflow用户
提问于 2011-04-05 12:04:53
回答 4查看 3.4K关注 0票数 5

我的代码:

代码语言:javascript
运行
复制
function Check($Variable, $DefaultValue) {
    if(isset($Variable) && $Variable != "" && $Variable != NULL) {
        return $Variable;
    }
    else {
        return $DefaultValue;
    }
}

$a = Check(@$foo, false);
$b = Check(@$bar, "Hello");

//$a now equals false because $foo was not set.
//$b now equals "Hello" because $bar was not set.
  1. 当一个变量不存在并传递给函数(抑制错误)时,实际传递的是什么?
  2. 这个函数是否有任何未定义的行为?
  3. 是否有更好的方法来包装测试变量是否存在,并从函数中提供默认值?
  4. 当测试变量时,isset()在引擎盖下检查什么?

编辑:

默认值是用户定义的。有时是一个数字,有时是一个字符串。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-04-05 12:08:14

  1. 传递空,则会引发通知错误。
  2. 不,函数只看到它的参数(它不在乎如何调用它)
  3. 您可以轻松地指定默认值--函数函数($mandatory,$optional =‘默认值’);
  4. 在函数参数上使用Isset是没有意义的,因为参数已经在函数签名中设置了。
票数 8
EN

Stack Overflow用户

发布于 2018-04-21 05:23:07

您可以通过引用将变量传递给方法,方法是在声明函数时将&放在它的前面。然后,您只需检查它是否在函数中设置,而不必担心在传递未设置的值时是否会禁用警告。

代码语言:javascript
运行
复制
function Check(&$Variable, $DefaultValue) {
    if(isset($Variable) && $Variable != "" && $Variable != NULL) {
        return $Variable;
    }
    else {
        return $DefaultValue;
    }
}

$a = Check($foo, false);
$b = Check($bar, "Hello");
票数 4
EN

Stack Overflow用户

发布于 2011-04-05 12:07:48

  1. null将被通过
  2. PHP中没有未定义的行为
  3. 通常测试是用empty($var)进行的,例如:Check(empty($foo) ? null : $foo),但取决于具体情况,isset可能更合适
  4. isset所做的正是记录在案??它测试作用域中是否存在这样一个变量,并且它的值与null不相同。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5551491

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档