代码之家  ›  专栏  ›  技术社区  ›  Yousuf Memon

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

  •  2
  • Yousuf Memon  · 技术社区  · 13 年前

    我正在尝试制作一个函数,它将做以下语句所做的事情。。。。

    <?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 回复  |  直到 13 年前
        1
  •  4
  •   Darkzaelus    13 年前

    如果你使用引用,如果变量没有定义,你就不会有任何警告(或错误,我的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

        2
  •  0
  •   Peter Ilfrich    13 年前

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

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

    然后只需使用:

    echo ifset($var);
    
        3
  •  0
  •   Hkachhia    13 年前

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

    你已经通过了 echo_ifset($message) .if消息变量已定义。

        4
  •  0
  •   Stefan Gi    13 年前

    在if语句中删除一个$:

    function echo_ifset($dyn_var){
    $var = $dyn_var;
    if(isset($var)){
        global $$var;
        echo $$var;
    };
    }
    
    推荐文章