php获取一个变量的名字的方法
PHP中,所有的变量都存储在"符号表"的HastTable结构中,符号的作用域是与活动符号表相关联的。因此,同一时间,只有一个活动符号表。
我们要获取到当前活动符号表可以通过get_defined_vars方法来获取。
get_defined_vars//返回所有已定义的变量所组成的数组
根据变量的值查找变量名字,但要注意,有可能有相同值的变量存在。
因此先将当前变量的值保存到一个临时变量中,然后再对原变量赋唯一值,以便查找出变量的名字,找到名字后,将临时变量的值重新赋值到原变量。
例子1:
<?php
$a='100';
echo'$anameis:'.get_variable_name($a).'value:'.$a;//$anameis:avalue:100
/**
*@paramString$var要查找的变量
*@paramArray$scope要搜寻的范围
*@paramString变量名称
*/
functionget_variable_name(&$var,$scope=null){
$scope=$scope==null?$GLOBALS:$scope;//如果没有范围则在globals中找寻
//因有可能有相同值的变量,因此先将当前变量的值保存到一个临时变量中,然后再对原变量赋唯一值,以便查找出变量的名称,找到名字后,将临时变量的值重新赋值到原变量
$tmp=$var;
$var='tmp_value_'.mt_rand();
$name=array_search($var,$scope,true);//根据值查找变量名称
$var=$tmp;
return$name;
}
?>
例子2:获取function里面定义的变量名字
<?php
functiontest(){
$a='100';
echo'$anameis:'.get_variable_name($a);
}
test();//$anameis:undefined
//因为在function中定义的变量globals会找不到
functiontest2(){
$a='100';
echo'$anameis:'.get_variable_name($a,get_defined_vars());
}
test2();//$anameis:a
//将scope设定为get_defined_vars()可以找到
?>热门推荐
1 训练狗狗憋尿
2 狗狗追踪训练
3 狗狗训练要多少钱
5 深圳狗狗训练
6 训练狗狗唤回
7 狗狗叫怎么训练
8 狗狗训练班
10 狗狗社会化训练
11 狗狗叫回训练
12 广州狗狗训练学校
13 狗狗训练躺下
14 狗狗随行训练
15 训练狗狗巡回
16 狗狗要怎么训练
17 狗狗喂食训练
18 训练狗狗躺下