如何解决如何获得变量变量的名称?
| 因此,我需要全局空间中的实际变量名\“ varName \”。此函数实际上是类内部的方法。 为简单起见,代码是任意的$varName = \'what ever\';
public function save($var)
{
$i[varName goes here] = $var;
}
我不知道这是否有可能,但是我想也许可以进行回调?
解决方法
如果它是全局变量,则可以使用以下命令找出原始名称:
$varname = array_search($var,$GLOBALS);
但这并不是太可靠;最好的猜测。如果两个全局变量包含相同的值,则您将只接收其中一个的名称。
, 在文档中阅读$GLOBALS
变量。
这可能就是您所需要的。根据确定所需变量的方式,例如,用户array_search()
可以根据该值查找正确的名称。
注意:“ 2”是关于全局范围的变量。
编辑:
但这仍然是一个猜测。您可以尝试以下方法来确定具有〜100%确定性的传递变量的名称:
将变量传递给具有引用的方法。
使用array_search()
查找变量的名称。如果只有一个键与之匹配,那么您就是您的名字。如果不是,请转到下一步。
保存变量的初始值,并保存找到匹配元素的位置列表。
将变量的值更改为新值。根据新值执行另一次搜索,并获得从点号开始也在位置列表中的位置。 3。
此时,您可能已经找到了要查找的变量的名称。
但...
真的需要吗?我建议您寻找更简单的解决方案,对代码进行更好的封装。
附言array_search()
实际上只返回一个键(请参阅文档)。您应该知道这一点,并且如果有多个变量与您的搜索条件匹配,则搜索多个结果会更加复杂,从而不会跳过正确的结果。 (EDIT2:正如马里奥建议的那样,array_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);
?>
印刷品:
Array
(
[varName] => what ever
)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。