本帖最后由 u010200485 于 2014-03-11 12:27:23 编辑

解决方案 »

  1.   


    $var_name = 'var_value';
    function get_variable_name(&$var, $scope = NULL) {
    if (NULL == $scope) {
        $scope = $GLOBALS;
    }
     
        $tmp = $var;
        $var = "tmp_exists_" . mt_rand();
        $name = array_search($var, $scope, TRUE);
        $var = $tmp;
        return $name;
    }
    echo get_variable_name($var_name);//var_name取变量名做什么?这是小白为题么?
      

  2.   


    感谢解答,关键字$GLOBALS啊,今天又学到新东西了。
    我主要是想做一个带预设值下拉框的php函数,想直接给一个选项数组$select_arr,然后<select>标签的name就直接从‘select_arr’中把arr砍去,这样不用另外给标签名,可以少给一个变量,当然定制性强一点,要求array和<select>的命名要求就差一个'_arr',所以有这样的疑问,不知到是不是很愚钝,是不是有别的好办法。
      

  3.   


    感谢解答,关键字$GLOBALS啊,今天又学到新东西了。
    我主要是想做一个带预设值下拉框的php函数,想直接给一个选项数组$select_arr,然后<select>标签的name就直接从‘select_arr’中把arr砍去,这样不用另外给标签名,可以少给一个变量,当然定制性强一点,要求array和<select>的命名要求就差一个'_arr',所以有这样的疑问,不知到是不是很愚钝,是不是有别的好办法。不过仔细一看不太明白,    $var = "tmp_exists_" . mt_rand();
        $name = array_search($var, $scope, TRUE);这个是什么意思?我原来理解是在$scope中找原来的$var的值,但是 为什么要$var = "tmp_exists_" . mt_rand();呢?
    另外,如果有$scope中两个变量的值一样的话,貌似就搞混掉了。
      

  4.   

    是不是想取$var_name这个变量的值var_value
      

  5.   

    是,我不理解的是这一句干嘛用?
    $var = "tmp_exists_" . mt_rand();
      

  6.   


    function print_var_name($var) {
        foreach($GLOBALS as $var_name => $value) {
            if ($value === $var) {
                return $var_name;
            }
        }    return false;
    }看看老外怎么说
      

  7.   

    忘了贴地址
    http://stackoverflow.com/questions/255312/how-to-get-a-variable-name-as-a-string-in-php
      

  8.   

    这样?$a = "var_name";
    $$a = "var_value";
    echo $a;
    echo $$a;
      

  9.   

    先有鸡还是先有蛋的问题。第一个问题 1楼 已经解答。$var = 'tmp_value_'.mt_rand();  
    $name = array_search($var, $scope, true);

    因为是根据值找已定义的变量,会存在相同变量值的情况。以上两句的作用就是解决这个问题的。
    解决方法:
    1.先将原来变量的值用一个临时变量保存
    2.然后把变量值修改为唯一的值(就是不可能有重复的值),再search,这就会找到唯一的变量名。
    3.把临时变量的值还原到原来变量因为是用&$var,地址引用,因此修改变量值后,都可以找到第二个问题,要做到的话,$argument_name只能用地址引用,例如这样就可以获取到 parameter_namefunction func_name(&$argument_name) {
        echo get_variable_name($argument_name);
    }$parameter_name = 'parameter_value';
    func_name($parameter_name);function get_variable_name(&$var, $scope=null){  
      
        $scope = $scope==null? $GLOBALS : $scope;
        $tmp = $var;  
          
        $var = 'tmp_value_'.mt_rand();  
        $name = array_search($var, $scope, true);
      
        $var = $tmp;  
        return $name;  
      

  10.   

    获取变量名干啥?都知道变量名了,还需要去获取吗?www.sdlydl.cn