为了账号安全,请及时绑定邮箱和手机立即绑定

如何在PHP中以字符串的形式获得变量名?

如何在PHP中以字符串的形式获得变量名?

PHP
qq_笑_17 2019-06-15 18:04:28
如何在PHP中以字符串的形式获得变量名?假设我有以下PHP代码:$FooBar = "a string";然后我需要这样的函数:print_var_name($FooBar);其中的指纹:FooBar有什么办法可以做到吗?这在PHP中是可能的吗?
查看完整描述

3 回答

?
守着一只汪

TA贡献1872条经验 获得超3个赞

你可以用GET_Defined_vars()若要查找与您要查找的变量名相同值的变量的名称,请执行以下操作。显然,这并不总是有效的,因为不同的变量通常具有相同的值,但这是我能想到的唯一的方法。

编辑:GET_Defined_vars()似乎不能正常工作,它返回‘var’,因为函数本身使用$var。$globals似乎起作用了,所以我把它改成了那个。

function print_var_name($var) {
    foreach($GLOBALS as $var_name => $value) {
        if ($value === $var) {
            return $var_name;
        }
    }

    return false;}

编辑:要明确的是,在PHP中没有很好的方法来做到这一点,这可能是因为您不应该这样做。也许有更好的方法来做你想做的事。


查看完整回答
反对 回复 2019-06-15
?
慕码人2483693

TA贡献1860条经验 获得超9个赞

我也想不出一种有效的方法,但我想到了这个。它的工作,为以下有限的用途。

耸肩

<?phpfunction varName( $v ) {
    $trace = debug_backtrace();
    $vLine = file( __FILE__ );
    $fLine = $vLine[ $trace[0]['line'] - 1 ];
    preg_match( "#\\$(\w+)#", $fLine, $match );
    print_r( $match );}$foo = "knight";$bar = array( 1, 2, 3 );$baz = 12345;varName( $foo );varName( $bar );varName( $baz );?>// Returns
Array
(
    [0] => $foo
    [1] => foo
)
Array
(
    [0] => $bar
    [1] => bar
)
Array
(
    [0] => $baz
    [1] => baz
)

它基于调用函数的行工作,在该行中,它找到传入的参数。我认为它可以扩展到使用多个参数,但是,正如其他人所说的,如果您能够更好地解释这种情况,另一种解决方案可能会更好。


查看完整回答
反对 回复 2019-06-15
  • 3 回答
  • 0 关注
  • 1336 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信