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

 更新时间:2014年09月05日 11:21:49   投稿:whsnow  
将当前变量的值保存到一个临时变量中,然后再对原变量赋唯一值,以便查找出变量的名字,找到名字后,将临时变量的值重新赋值到原变量

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

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

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

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

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

例子1:

<?php 

$a = '100'; 

echo '$a name is:'.get_variable_name($a).' value:'.$a; // $a name is: a value: 100 

/** 
* @param String $var 要查找的变量 
* @param Array $scope 要搜寻的范围 
* @param String 变量名称 
*/ 
function get_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 
function test(){ 
$a = '100'; 
echo '$a name is:'.get_variable_name($a); 
} 

test(); // $a name is: undefined 
//因为在function中定义的变量globals会找不到 

function test2(){ 
$a = '100'; 
echo '$a name is:'.get_variable_name($a, get_defined_vars()); 
} 

test2(); // $a name is: a 
// 将scope设定为 get_defined_vars() 可以找到 

?>

相关文章

  • PHP简单实现上一页下一页功能示例

    PHP简单实现上一页下一页功能示例

    这篇文章主要介绍了PHP简单实现上一页下一页功能,结合实例形式较为详细的分析了php实现上一页下一页功能的原理与具体实现技巧,需要的朋友可以参考下
    2016-09-09
  • 解析PHP中的unset究竟会不会释放内存

    解析PHP中的unset究竟会不会释放内存

    PHP中的unset究竟会不会释放内存?以下我们实例说明一下
    2013-07-07
  • php判断一个数组是否为有序的方法

    php判断一个数组是否为有序的方法

    这篇文章主要介绍了php判断一个数组是否为有序的方法,涉及php操作数组遍历的相关技巧,非常具有实用价值,需要的朋友可以参考下
    2015-03-03
  • PHP时间函数使用详解

    PHP时间函数使用详解

    今天小编就为大家分享一篇关于PHP时间函数使用详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • PHP实现的分解质因数操作示例

    PHP实现的分解质因数操作示例

    这篇文章主要介绍了PHP实现的分解质因数操作,结合实例形式分析了php实现分解质因数的相关原理、步骤与操作技巧,需要的朋友可以参考下
    2018-08-08
  • php实现复制移动文件的方法

    php实现复制移动文件的方法

    这篇文章主要介绍了php实现复制移动文件的方法,实例分析了php实现针对文件的复制及移动的技巧,需要的朋友可以参考下
    2015-07-07
  • PHP5多态性与动态绑定介绍

    PHP5多态性与动态绑定介绍

    这篇文章主要介绍了PHP5多态性与动态绑定介绍,本文主要讲解了什么是多态性和什么是动态绑定,并给出相应实例,需要的朋友可以参考下
    2015-04-04
  • php socket方式提交的post详解

    php socket方式提交的post详解

    php下POST报文到主机 ,post提交利用代码
    2008-07-07
  • PHP数组递归排序实现方法示例

    PHP数组递归排序实现方法示例

    这篇文章主要介绍了PHP数组递归排序实现方法,结合实例形式分析了php基于递归算法针对特定key对数组进行排序的相关操作技巧,需要的朋友可以参考下
    2018-03-03

最新评论