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


Posted in PHP onSeptember 05, 2014

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 相关文章推荐
建立文件交换功能的脚本(三)
Oct 09 PHP
留言板翻页的实现详解
Oct 09 PHP
Win2003服务器安全加固设置--进一步提高服务器安全性
May 23 PHP
php中使用Imagick实现图像直方图的实现代码
Aug 30 PHP
ThinkPHP采用实现三级循环代码实例
Jul 18 PHP
php中Session的生成机制、回收机制和存储机制探究
Aug 19 PHP
ThinkPHP模版中导入CSS和JS文件的方法
Nov 29 PHP
PHPExcel内存泄漏问题解决方法
Jan 23 PHP
自己写的php中文截取函数mb_strlen和mb_substr
Feb 09 PHP
图文详解phpstorm配置Xdebug进行调试PHP教程
Jun 13 PHP
ThinkPHP5框架实现简单的批量查询功能示例
Jun 07 PHP
PHP7 echo和print语句实例用法
Feb 15 PHP
Yii使用find findAll查找出指定字段的实现方法
Sep 05 #PHP
如何让thinkphp在模型中自动完成session赋值小教程
Sep 05 #PHP
php清空(删除)指定目录下的文件,不删除目录文件夹的实现代码
Sep 04 #PHP
Chrome Web App开发小结
Sep 04 #PHP
Yii查询生成器(Query Builder)用法实例教程
Sep 04 #PHP
php设计模式之简单工厂模式详解
Sep 04 #PHP
Laravel框架表单验证详解
Sep 04 #PHP
You might like
php 异常处理实现代码
2009/03/10 PHP
基于PHP实现简单的随机抽奖小程序
2016/01/05 PHP
thinkPHP5.0框架模块设计详解
2017/03/18 PHP
Laravel 5.5 的自定义验证对象/类示例代码详解
2017/08/29 PHP
Javascript技术技巧大全(五)
2007/01/22 Javascript
jsTree 基于JQuery的排序节点 Bug
2011/07/26 Javascript
javascript获取元素偏移量的方法有哪些
2014/06/24 Javascript
深入理解JavaScript系列(19):求值策略(Evaluation strategy)详解
2015/03/05 Javascript
jQuery实现的向下图文信息滚动效果
2015/05/03 Javascript
javascript实现base64 md5 sha1 密码加密
2015/09/09 Javascript
js中不同的height, top的区别对比
2015/09/24 Javascript
Javascript的表单验证-揭开正则表达式的面纱
2016/03/18 Javascript
jQueryMobile之窗体长内容的缺陷与解决方法实例分析
2017/09/20 jQuery
JS实现基于拖拽改变物体大小的方法
2018/01/23 Javascript
React组件中的this的具体使用
2018/02/28 Javascript
Python中实现两个字典(dict)合并的方法
2014/09/23 Python
Python进程间通信之共享内存详解
2017/10/30 Python
pandas的object对象转时间对象的方法
2018/04/11 Python
pytorch 调整某一维度数据顺序的方法
2018/12/08 Python
Python中print和return的作用及区别解析
2019/05/05 Python
python 实现创建文件夹和创建日志文件的方法
2019/07/07 Python
图文详解Django使用Pycharm连接MySQL数据库
2019/08/09 Python
python sorted方法和列表使用解析
2019/11/18 Python
Html5写一个简单的俄罗斯方块小游戏
2019/12/03 HTML / CSS
cosme官方海外旗舰店:日本最大化妆品和美容产品的综合口碑网站
2017/01/18 全球购物
英国汽车座椅和婴儿车购物网站:Uber Kids
2017/04/19 全球购物
KIKO比利时官网:意大利彩妆品牌
2017/07/23 全球购物
印度尼西亚最大的电商平台:Tokopedia(印尼版淘宝)
2017/12/02 全球购物
Rossignol金鸡美国官网:始于1907年法国百年雪具品牌
2019/03/06 全球购物
全球速卖通俄罗斯站:AliExpress俄罗斯
2019/06/17 全球购物
.NET程序员的几道面试题
2012/06/01 面试题
北京鼎普科技股份有限公司软件测试面试题
2012/04/07 面试题
《尊严》教学反思
2014/02/11 职场文书
测试工程师程序员求职信范文
2014/02/20 职场文书
python 如何执行控制台命令与操作剪切板
2021/05/20 Python
JavaScript实现一键复制内容剪贴板
2022/07/23 Javascript