Php 如何获取变量的名称?
因此,我需要全局空间中的实际变量名“varName”。这个函数实际上是类中的一个方法 为了简单起见,代码是任意的Php 如何获取变量的名称?,php,variables,Php,Variables,因此,我需要全局空间中的实际变量名“varName”。这个函数实际上是类中的一个方法 为了简单起见,代码是任意的 我不知道这是否可能,但我想可能通过回调?如果是全局变量,您可以通过以下方式找到原始名称: $varname = array_search($var, $GLOBALS); 但这并不过分可靠;最好的猜测。如果两个全局变量包含相同的值,您只会收到其中任何一个的名称。阅读$GLOBALS变量 这可能是你需要的。根据确定所需变量的方式,例如,可以使用userarray\u search()
我不知道这是否可能,但我想可能通过回调?如果是全局变量,您可以通过以下方式找到原始名称:
$varname = array_search($var, $GLOBALS);
但这并不过分可靠;最好的猜测。如果两个全局变量包含相同的值,您只会收到其中任何一个的名称。阅读
$GLOBALS
变量
这可能是你需要的。根据确定所需变量的方式,例如,可以使用userarray\u search()
根据值查找正确的名称
注意:$GLOBALS
是关于全局范围的变量
编辑:
但这仍然是一个猜测。您可以尝试以下方法以100%确定地确定所传递变量的名称:
array\u search()
查找变量名称。如果只有一个键与之匹配,那么您就有了自己的名字。如果没有,请转至下一步Ps.
array\u search()
实际上只返回一个键()。您应该知道这一点,并使搜索多个结果更加复杂,以便在多个变量与您的搜索条件匹配时不会跳过正确的结果。(EDIT2:正如马里奥建议的那样,array\u intersect($GLOBALS,array($var))
就足够了)在C语言中,您可以使用宏。我认为PHP中没有对等的语言
您可以将变量名作为字符串传递给函数,然后在函数中从GLOBALS获取变量值或对其求值。谢谢您的解决方案!
这是我的测试:
<?php
$varName = 'what ever';
function save($var)
{
$i[array_search($var, $GLOBALS)] = $var;
print_r($i);
}
save($varName);
?>
我认为您应该稍微修改一下代码,因为它会让您对要传递的内容以及要存储的内容/位置感到非常困惑。我只想到这个解决方案的可能副本。我相信,仍然有一些解决方案可以解决这个问题,并产生多种结果——您可以执行我在回答中描述的内容。虽然我不知道,如果它能工作……<代码> <代码> > TADEKE:如果你想找到多个匹配的密钥,那也同样简单:<代码> Arayy交叉($Guales,数组($var))< /> > @ TAMER不正确-只考虑两个变量的值等于“代码>”的情况“什么是‘< /代码>”
<?php
$varName = 'what ever';
function save($var)
{
$i[array_search($var, $GLOBALS)] = $var;
print_r($i);
}
save($varName);
?>
Array
(
[varName] => what ever
)