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 相关文章推荐
无数据库的详细域名查询程序PHP版(2)
Oct 09 PHP
PHP面向接口编程 耦合设计模式 简单范例
Mar 23 PHP
解析PHP计算页面执行时间的实现代码
Jun 18 PHP
php使用pdo连接mssql server数据库实例
Dec 25 PHP
PHP中使用xmlreader读取xml数据示例
Dec 29 PHP
php使用正则表达式获取图片url的方法
Jan 16 PHP
php中array_slice和array_splice函数解析
Oct 18 PHP
解决微信授权回调页面域名只能设置一个的问题
Dec 11 PHP
PHP实现移除数组中为空或为某值元素的方法
Jan 07 PHP
yii2.0整合阿里云oss上传单个文件的示例
Sep 19 PHP
PHP引擎php.ini参数优化深入讲解
Mar 24 PHP
php+laravel 扫码二维码签到功能
May 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+Mysql无限分类的方法汇总
2015/03/02 PHP
PHP实现的基于单向链表解决约瑟夫环问题示例
2017/09/30 PHP
ajax无刷新动态调用股票信息(改良版)
2008/11/01 Javascript
jQuery学习笔记(2)--用jquery实现各种模态提示框代码及项目构架
2013/04/08 Javascript
JavaScript打印iframe内容示例代码
2013/08/20 Javascript
js获取IFRAME当前的URL的方法
2013/11/13 Javascript
javasciprt下jquery函数$.post执行无响应的解决方法
2014/03/13 Javascript
JS实现的左侧竖向滑动菜单效果代码
2015/10/19 Javascript
jQuery解析Json实例详解
2015/11/24 Javascript
jQuery validate插件实现ajax验证重复的2种方法
2016/01/22 Javascript
js无法获取到html标签的属性的解决方法
2016/07/26 Javascript
Sequelize中用group by进行分组聚合查询
2016/12/12 Javascript
ES6新数据结构Map功能与用法示例
2017/03/31 Javascript
JS实现线性表的链式表示方法示例【经典数据结构】
2017/04/11 Javascript
详解如何将 Vue-cli 改造成支持多页面的 history 模式
2017/11/20 Javascript
JS基于for语句编写的九九乘法表示例
2018/01/04 Javascript
JS实现指定区域的全屏显示功能示例
2019/04/25 Javascript
解决Vue+Electron下Vuex的Dispatch没有效果问题
2019/05/20 Javascript
[02:17]2016国际邀请赛中国区预选赛VG战队领队采访
2016/06/26 DOTA
[09:34]2018DOTA2国际邀请赛寻真——永不放弃的iG
2018/08/14 DOTA
跟老齐学Python之集成开发环境(IDE)
2014/09/12 Python
python实现斐波那契数列的方法示例
2017/01/12 Python
python-tkinter之按钮的使用,开关方法
2019/06/11 Python
python中通过selenium简单操作及元素定位知识点总结
2019/09/10 Python
python通过实例讲解反射机制
2019/10/17 Python
澳大利亚便宜隐形眼镜购买网站:QUICKLENS Australia
2018/10/06 全球购物
比利时的在线灯具店:Lampen24.be
2019/07/01 全球购物
介绍一下SQL Server的全文索引
2013/08/15 面试题
社区中秋节活动方案
2014/01/29 职场文书
工作粗心大意检讨书
2014/09/18 职场文书
教师四风自我剖析材料
2014/09/30 职场文书
个人查摆问题整改措施
2014/10/04 职场文书
大学运动会通讯稿
2015/07/18 职场文书
2016年党员公开承诺书范文
2016/03/24 职场文书
2019最新校园运动会广播稿!
2019/06/28 职场文书
修改MySQL的数据库引擎为INNODB的方法
2021/05/26 MySQL