0

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

}   
4

3 回答 3

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

于 2012-06-19T12:25:29.370 回答
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 );
}

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

于 2012-06-19T12:25:40.273 回答
1

好..

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

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

不过可能是个坏主意!

于 2012-06-19T12:25:47.247 回答