当前位置:首页 > PHP教程 > php应用 > 列表

php获取一个变量的名字的方法

发布:smiling 来源: PHP粉丝网  添加日期:2021-04-10 21:31:23 浏览: 评论:0 

将当前变量的值保存到一个临时变量中,然后再对原变量赋唯一值,以便查找出变量的名字,找到名字后,将临时变量的值重新赋值到原变量。

PHP中,所有的变量都存储在"符号表"的HastTable结构中,符号的作用域是与活动符号表相关联的。因此,同一时间,只有一个活动符号表。

我们要获取到当前活动符号表可以通过 get_defined_vars 方法来获取。

get_defined_vars // 返回所有已定义的变量所组成的数组

根据变量的值查找变量名字,但要注意,有可能有相同值的变量存在。

因此先将当前变量的值保存到一个临时变量中,然后再对原变量赋唯一值,以便查找出变量的名字,找到名字后,将临时变量的值重新赋值到原变量。

例子1:

  1. <?php  
  2.  
  3. $a = '100';  
  4.  
  5. echo '$a name is:'.get_variable_name($a).' value:'.$a// $a name is: a value: 100  
  6.  
  7. /**  
  8. * @param String $var 要查找的变量  
  9. * @param Array $scope 要搜寻的范围  
  10. * @param String 变量名称  
  11. */ 
  12. function get_variable_name(&$var$scope=null){  
  13.  
  14. $scope = $scope==null? $GLOBALS : $scope// 如果没有范围则在globals中找寻  
  15.  
  16. // 因有可能有相同值的变量,因此先将当前变量的值保存到一个临时变量中,然后再对原变量赋唯一值,以便查找出变量的名称,找到名字后,将临时变量的值重新赋值到原变量  
  17. $tmp = $var;  
  18.  
  19. $var = 'tmp_value_'.mt_rand();  
  20. $name = array_search($var$scope, true); // 根据值查找变量名称  
  21.  
  22. $var = $tmp;  
  23. return $name;  
  24. ?> 

例子2:获取function里面定义的变量名字

  1. <?php  
  2. function test(){  
  3. $a = '100';  
  4. echo '$a name is:'.get_variable_name($a);  
  5. }  
  6.  
  7. test(); // $a name is: undefined  
  8. //因为在function中定义的变量globals会找不到  
  9.  
  10. function test2(){  
  11. $a = '100';  //www.phpfensi.com 
  12. echo '$a name is:'.get_variable_name($a, get_defined_vars());  
  13. }  
  14.  
  15. test2(); // $a name is: a  
  16. // 将scope设定为 get_defined_vars() 可以找到  
  17.  
  18. ?> 

Tags: php获取变量名字

分享到: