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


Can a PHP variable know its name?

可能的重复项:
如何在 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}";
}   

这是不可能的,很容易。你必须使用$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 );
}

我在这里找到的: 如何在 PHP 中将变量名称作为字符串获取?

您可以使用此函数:

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

好吧。

您可以使用debug_backtrace找出所谓的output__variable_name_and_value函数。

然后你知道文件名和行号,所以你可以尝试解析源文件并找出output__variable_name_and_value()之间的内容。

不过可能是个坏主意!