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

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

假设我有以下PHP代码:

$FooBar = "a string";

然后我需要这样的函数:

print_var_name($FooBar);

其中的指纹:

FooBar

有什么办法可以做到吗?这在PHP中是可能的吗?


qq_笑_17
浏览 1337回答 3
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中没有很好的方法来做到这一点,这可能是因为您不应该这样做。也许有更好的方法来做你想做的事。

慕码人2483693

我也想不出一种有效的方法,但我想到了这个。它的工作,为以下有限的用途。耸肩<?phpfunction&nbsp;varName(&nbsp;$v&nbsp;)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;$trace&nbsp;=&nbsp;debug_backtrace(); &nbsp;&nbsp;&nbsp;&nbsp;$vLine&nbsp;=&nbsp;file(&nbsp;__FILE__&nbsp;); &nbsp;&nbsp;&nbsp;&nbsp;$fLine&nbsp;=&nbsp;$vLine[&nbsp;$trace[0]['line']&nbsp;-&nbsp;1&nbsp;]; &nbsp;&nbsp;&nbsp;&nbsp;preg_match(&nbsp;"#\\$(\w+)#",&nbsp;$fLine,&nbsp;$match&nbsp;); &nbsp;&nbsp;&nbsp;&nbsp;print_r(&nbsp;$match&nbsp;);}$foo&nbsp;=&nbsp;"knight";$bar&nbsp;=&nbsp;array(&nbsp;1,&nbsp;2,&nbsp;3&nbsp;);$baz&nbsp;=&nbsp;12345;varName(&nbsp;$foo&nbsp;);varName(&nbsp;$bar&nbsp;);varName(&nbsp;$baz&nbsp;);?>//&nbsp;Returns Array ( &nbsp;&nbsp;&nbsp;&nbsp;[0]&nbsp;=>&nbsp;$foo &nbsp;&nbsp;&nbsp;&nbsp;[1]&nbsp;=>&nbsp;foo ) Array ( &nbsp;&nbsp;&nbsp;&nbsp;[0]&nbsp;=>&nbsp;$bar &nbsp;&nbsp;&nbsp;&nbsp;[1]&nbsp;=>&nbsp;bar ) Array ( &nbsp;&nbsp;&nbsp;&nbsp;[0]&nbsp;=>&nbsp;$baz &nbsp;&nbsp;&nbsp;&nbsp;[1]&nbsp;=>&nbsp;baz )它基于调用函数的行工作,在该行中,它找到传入的参数。我认为它可以扩展到使用多个参数,但是,正如其他人所说的,如果您能够更好地解释这种情况,另一种解决方案可能会更好。
打开App,查看更多内容
随时随地看视频慕课网APP