2

我正在尝试创建一个函数来执行以下语句的操作......

<?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

4 回答 4

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

于 2012-08-30T11:30:10.333 回答
0

在 if 语句中删除一个 $:

function echo_ifset($dyn_var){
$var = $dyn_var;
if(isset($var)){
    global $$var;
    echo $$var;
};
}
于 2012-08-30T11:35:28.570 回答
0

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

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

然后只需使用:

echo ifset($var);
于 2012-08-30T11:29:59.933 回答
0

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

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

于 2012-08-30T11:31:46.573 回答