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+DBM的同学录程序(5)
Oct 09 PHP
php下过滤html代码的函数 提高程序安全性
Mar 02 PHP
在PHP中使用redis
Nov 04 PHP
php时区转换转换函数
Jan 07 PHP
php操作MongoDB基础教程(连接、新增、修改、删除、查询)
Mar 25 PHP
PHP中读取文件的8种方法和代码实例
Aug 05 PHP
php静态文件生成类实例分析
Jan 03 PHP
Yii隐藏URL中index.php的方法
Jul 12 PHP
PHP加密技术的简单实现
Sep 04 PHP
PHP用FTP类上传文件视频等的简单实现方法
Sep 23 PHP
TP5.0框架实现无限极回复功能的方法分析
May 04 PHP
Laravel框架之解决前端显示图片问题
Oct 24 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
做个自己站内搜索引擎
2006/10/09 PHP
在WAMP环境下搭建ZendDebugger php调试工具的方法
2011/07/18 PHP
php中3种方法统计字符串中每种字符的个数并排序
2012/08/27 PHP
PHP swfupload图片上传的实例代码
2013/09/30 PHP
PHP手机号中间四位用星号*代替显示的实例
2017/06/02 PHP
js 小贴士一星期合集
2010/04/07 Javascript
NodeJS的模块写法入门(实例代码)
2012/03/07 NodeJs
JavaScript将Table导出到Excel实现思路及代码
2013/03/13 Javascript
零基础搭建Node.js、Express、Ejs、Mongodb服务器及应用开发入门
2014/12/20 Javascript
使用AngularJS实现表单向导的方法
2015/06/19 Javascript
jQuery中的基本选择器用法学习教程
2016/04/14 Javascript
详解Javascript数据类型的转换规则
2016/12/12 Javascript
详谈js模块化规范
2017/07/07 Javascript
浅谈如何使用webpack构建多页面应用
2018/05/30 Javascript
vue.js绑定事件监听器示例【基于v-on事件绑定】
2018/07/07 Javascript
vue实现购物车小案例
2019/09/27 Javascript
JavaScript实现随机五位数验证码
2019/09/27 Javascript
js滚轮事件 js自定义滚动条的实现
2020/01/18 Javascript
Vue Render函数原理及代码实例解析
2020/07/30 Javascript
解决vue打包报错Unexpected token: punc的问题
2020/10/24 Javascript
[47:43]完美世界DOTA2联赛PWL S3 Magama vs GXR 第二场 12.19
2020/12/24 DOTA
python设置windows桌面壁纸的实现代码
2013/01/28 Python
python使用pil库实现图片合成实例代码
2018/01/20 Python
Python实现的简单排列组合算法示例
2018/07/04 Python
Tensorflow实现将标签变为one-hot形式
2020/05/22 Python
Python之京东商品秒杀的实现示例
2021/01/06 Python
Pytorch自定义Dataset和DataLoader去除不存在和空数据的操作
2021/03/03 Python
CSS3为背景图设置遮罩并解决遮罩样式继承问题
2020/06/22 HTML / CSS
图片上传插件ImgUploadJS:用HTML5 File API 实现截图粘贴上传、拖拽上传
2016/01/20 HTML / CSS
欧洲第一的摇滚和金属乐队服装网站:EMP
2017/10/26 全球购物
逻辑链路控制协议
2016/10/01 面试题
资深生产主管自我评价
2013/09/22 职场文书
党的群众路线教育实践活动公开承诺书
2014/03/28 职场文书
高中军训的心得体会
2014/09/01 职场文书
超市仓管员岗位职责范本
2014/09/18 职场文书
2016年“9.22”世界无车日活动小结
2016/04/05 职场文书