检查变量是否在函数内“全局”设置

时间:2012-08-30 11:26:35

标签: php function isset

我试图创建一个能够执行以下语句的功能....

<?php
if(isset($var)){
    echo $var;
}
else {
    echo "";
}
?>

到目前为止我已经这样做了....

<?php
function echo_ifset($dyn_var){
    $var = $dyn_var;
    if(isset($$var)){
        global $$var;
        echo $$var;
    }
}

但是当我跑步时它没有显示任何东西..

echo_ifset('message');
// while message is a defined variable.

4 个答案:

答案 0 :(得分:4)

如果使用引用,如果未定义变量,则不会出现警告(或错误,我的PHP有点生锈!)的任何问题:

function echo_ifset(&$var) { 
    if (isset($var)) { 
        echo $var; 
    };
}

请注意&声明之前的$var,这是参考运算符。

然后,您可以使用以下方式调用它:

echo_ifset($message);

如果要定义设置默认值的方法,此方法也很好:

<?php 
function defaultValue(&$var, $default) { 
    if (!isset($var)) { 
        return $default; 
    }

    return $var;
} 
?>

可在以下网址找到一些额外的阅读材料:http://www.php.net/manual/en/language.references.pass.php

答案 1 :(得分:0)

您需要回显函数的返回值:

function ifset($dyn_var) {
  if (isset($dyn_var)) {
    return $dyn_var;
  }
  else {
    return "";
  }
}

然后使用:

echo ifset($var);

答案 2 :(得分:0)

您已将消息作为字符串传递,因此不会显示它。

你已经过echo_ifset($message)。如果消息变量已经定义。

答案 3 :(得分:0)

在if语句中删除一个$:

function echo_ifset($dyn_var){
$var = $dyn_var;
if(isset($var)){
    global $$var;
    echo $$var;
};
}