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()可以找到
?>热门推荐
10 八一幼儿祝福语大全简短
11 公司乔迁食堂祝福语简短
12 婚礼结束聚餐祝福语简短
13 儿媳买车妈妈祝福语简短
14 毕业送礼老师祝福语简短
15 同事辞职正常祝福语简短
16 恭贺新婚文案祝福语简短
17 金店立秋祝福语简短英文
18 婆婆高寿祝福语大全简短