如何在PHP中获取变量名?

时间:2010-03-05 05:57:44

标签: php

func($name1)应该返回name1

有可能吗?

6 个答案:

答案 0 :(得分:7)

这是一个功能。

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];
}

像这样称呼

$test = "blah";
echo var_name($test,  get_defined_vars());

那将打印出“测试”。

我最初发现函数over here你也可以通过遍历get_defined_vars()返回的数组来完成它。这可能更容易理解。

答案 1 :(得分:3)

不,没有办法在PHP中获取变量的名称。

调用函数时,该函数只接收变量的内容,而不是“变量本身” - 这意味着函数无法找到传递给它的变量的名称。

答案 2 :(得分:2)

没有

答案 3 :(得分:2)

好主意?否

应该做的任何用法?否

概念证明?当然!

<?php

a($test);


function a($x) {
    $trace = debug_backtrace();
    $file = file($trace[0]['file']);
    $line = $file[$trace[0]['line']-1];

    var_dump($line); // Prints "a($test);" Do the Stringparsing and your done

}

是的,这通过阅读源文件来获取“简单”,它也可以通过使用名为“bytekit”的php扩展来实现,该扩展允许用户访问php操作码并从那​​里开始工作。

答案 4 :(得分:1)

没有

定义函数时,为其指定一个局部变量名称,使其具有该函数的作用域。 PHP将向函数传递适当的值,但符号不再在范围内。

然而,您可以考虑使用“variable variables”作为替代方案。

答案 5 :(得分:1)

显然, 可能是足够高的疯狂值。

此页面上的评论包括以下几种技巧: http://php.net/manual/en/language.variables.php

lucas dot karisny at linuxmail dot org的答案适用于我的机器: http://www.php.net/manual/en/language.variables.php#49997

因人而异。