PHP变量可以知道它的名字吗?

时间:2012-06-19 12:21:32

标签: php variables

  

可能重复:
  How to get a variable name as a string in PHP?

示例:

可以在PHP中实现这样的事情吗?

$Age = 43;

output_variable_name_and_value($Age);

    /*
    outputs:
    "The requested variable name is Age and its current value is 43"; 
    */


//If possible, how would the line marked below with ? ? ? ? be?

function output__variable_name_and_value($input)

{

    $var_name = get_name_somehow($input);   // ? ? ? ? 

    echo "The requested variable name is {$var_name} 
          and its current value is {$input}";

}   

3 个答案:

答案 0 :(得分:1)

您可以使用此功能:

function var_name(&$iVar, &$aDefinedVars) {
    foreach ($aDefinedVars as $k=>$v)
        $aDefinedVars_0[$k] = $v;

    $iVarSave = $iVar;
    $iVar     =!$iVar;

    $aDiffKeys = array_keys (array_diff_assoc ($aDefinedVars_0, $aDefinedVars));
    $iVar      = $iVarSave;

    return $aDiffKeys[0];
}

这样称呼:

var_name($Age, get_defined_vars());

来源:http://mach13.com/how-to-get-a-variable-name-as-a-string-in-php

答案 1 :(得分:1)

这是不可能的,很容易。你必须使用$ GLOBALS;

function get_variable_name($var) {
    foreach($GLOBALS as $k => $v) {
        if ($v === $var) {
            return $k;
        }
    }
    return false;
}

唯一的缺点是,如果它们都具有相同的值,它可能会返回不同的变量名称。

或者这个,

function varName( $v ) {
    $trace = debug_backtrace();
    $vLine = file( __FILE__ );
    $fLine = $vLine[ $trace[0]['line'] - 1 ];
    preg_match( "#\\$(\w+)#", $fLine, $match );
    print_r( $match );
}

我在这里找到:How to get a variable name as a string in PHP?

答案 2 :(得分:1)

嗯..

您可以使用debug_backtrace找出调用output__variable_name_and_value函数的内容。

然后你知道一个文件名和行号,这样你就可以尝试解析源文件,找出output__variable_name_and_value()之间的最新情况。

可能是一个坏主意!