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 相关文章推荐
使用MaxMind 根据IP地址对访问者定位
Oct 09 PHP
一个php作的文本留言本的例子(二)
Oct 09 PHP
php is_file 判断给定文件名是否为一个正常的文件
May 10 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十二)
Jun 25 PHP
Codeigniter的一些优秀特性总结
Jan 21 PHP
php输出xml属性的方法
Mar 19 PHP
php gd等比例缩放压缩图片函数
Jun 12 PHP
php性能分析之php-fpm慢执行日志slow log用法浅析
Oct 17 PHP
PHP实现通过strace定位故障原因的方法
Apr 29 PHP
PHP的PDO预定义常量讲解
Jan 24 PHP
PHP实现的62进制转10进制,10进制转62进制函数示例
Jun 06 PHP
php装饰者模式简单应用案例分析
Oct 23 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语法速查表
2007/01/02 PHP
PHP判断文件是否存在、是否可读、目录是否存在的代码
2012/10/03 PHP
php不允许用户提交空表单(php空值判断)
2013/11/12 PHP
CI框架学习笔记(一) - 环境安装、基本术语和框架流程
2014/10/26 PHP
php中file_get_contents与curl性能比较分析
2014/11/08 PHP
yii2 modal弹窗之ActiveForm ajax表单异步验证
2016/06/13 PHP
Yii2框架RESTful API 格式化响应,授权认证和速率限制三部分详解
2016/11/10 PHP
Jquery中增加参数与Json转换代码
2009/11/20 Javascript
nodejs 实现模拟form表单上传文件
2014/07/14 NodeJs
Javascript的表单验证-提交表单
2016/03/18 Javascript
浅析JS异步加载进度条
2016/05/05 Javascript
javascript中Date对象应用之简易日历实现
2016/07/12 Javascript
Web打印解决方案之普通报表打印功能
2016/08/29 Javascript
Javascript之深入浅出prototype
2017/02/06 Javascript
Vue上传组件vue Simple Uploader的用法示例
2017/08/25 Javascript
Angular4 反向代理Details实践
2018/05/30 Javascript
解决Vue在封装了Axios后手动刷新页面拦截器无效的问题
2018/11/08 Javascript
深入解析koa之异步回调处理
2019/06/17 Javascript
原生JavaScript实现五子棋游戏
2020/11/09 Javascript
Vue 简单实现前端权限控制的示例
2020/12/25 Vue.js
Django中的CACHE_BACKEND参数和站点级Cache设置
2015/07/23 Python
python不换行之end=与逗号的意思及用途
2017/11/21 Python
使用Python编写Prometheus监控的方法
2018/10/15 Python
Python面向对象程序设计示例小结
2019/01/30 Python
Python函数的返回值、匿名函数lambda、filter函数、map函数、reduce函数用法实例分析
2019/12/26 Python
Python列表解析操作实例总结
2020/02/26 Python
Pycharm配置autopep8实现流程解析
2020/11/28 Python
加拿大在线隐形眼镜专家:PerfectLens.ca
2016/11/19 全球购物
Charles & Colvard官网:美国莫桑石品牌
2019/06/05 全球购物
求职推荐信
2013/10/28 职场文书
公司财务工作总结的自我评价
2013/11/23 职场文书
股份合作协议书
2014/09/10 职场文书
大学生上课迟到检讨书
2014/10/15 职场文书
2014年助理政工师工作总结
2014/12/19 职场文书
班主任远程培训研修日志
2015/11/13 职场文书
MySQL8.0升级的踩坑历险记
2021/11/01 MySQL