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 相关文章推荐
第十一节 重载 [11]
Oct 09 PHP
Ha0k 0.3 PHP 网页木马修改版
Oct 11 PHP
PHP反射类ReflectionClass和ReflectionObject的使用方法
Nov 13 PHP
PHP的foreach中使用引用时需要注意的一个问题和解决方法
May 29 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(七)
Jun 23 PHP
ThinkPHP中的常用查询语言汇总
Aug 22 PHP
Drupal简体中文语言包安装教程
Sep 27 PHP
PHP json_encode() 函数详解及中文乱码问题
Nov 05 PHP
php页面跳转session cookie丢失导致不能登录等问题的解决方法
Dec 12 PHP
PHP实现对数组分页处理实例详解
Feb 07 PHP
PHP基于堆栈实现的高级计算器功能示例
Sep 15 PHP
php + WebUploader实现图片批量上传功能
May 06 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将向Java靠拢
2006/10/09 PHP
Yii调试查看执行SQL语句的方法
2016/07/15 PHP
PHP实现导出excel数据的类库用法示例
2016/10/15 PHP
laravel-admin 实现在指定的相册下添加照片
2019/10/21 PHP
基于PHP+mysql实现新闻发布系统的开发
2020/08/06 PHP
Jquery EasyUI中弹出确认对话框以及加载效果示例代码
2014/02/13 Javascript
js实现同一页面多个不同运动效果的方法
2015/04/10 Javascript
JS实现的适合做faq或menu滑动效果示例
2016/11/17 Javascript
Vue分页组件实例代码
2017/04/17 Javascript
JavaScript数据结构学习之数组、栈与队列
2017/05/02 Javascript
jQuery+Ajax实现用户名重名实时检测
2017/06/01 jQuery
Vue项目pdf(base64)转图片遇到的问题及解决方法
2018/10/19 Javascript
原生JS使用Canvas实现拖拽式绘图功能
2019/06/05 Javascript
使用layer模态框给新页面传值的方法
2019/09/27 Javascript
jquery validate 实现动态增加/删除验证规则操作示例
2019/10/28 jQuery
jQuery实现视频展示效果
2020/05/30 jQuery
国内常用的js类库大全(CDN公共库)
2020/06/24 Javascript
python中ConfigParse模块的用法
2014/09/29 Python
Python中优化NumPy包使用性能的教程
2015/04/23 Python
python字符串对其居中显示的方法
2015/07/11 Python
Python使用剪切板的方法
2017/06/06 Python
详解Python异常处理中的Finally else的功能
2017/12/29 Python
python编写微信远程控制电脑的程序
2018/01/05 Python
谈一谈基于python的面向对象编程基础
2019/05/21 Python
python3.7通过thrift操作hbase的示例代码
2020/01/14 Python
python中sort sorted reverse reversed函数的区别说明
2020/05/11 Python
python文件读取失败怎么处理
2020/06/23 Python
基于python+selenium自动健康打卡的实现代码
2021/01/13 Python
工地标语大全
2014/06/18 职场文书
营销计划书范文
2015/01/17 职场文书
违纪检讨书
2015/01/27 职场文书
银行招聘自荐信
2015/03/06 职场文书
社会心理学学习心得体会
2016/01/22 职场文书
创业开店,这样方式更合理
2019/08/26 职场文书
《刺客之王:C罗全景传记》:时代从来不会亏待手艺人
2019/11/28 职场文书
my.ini优化mysql数据库性能的十个参数(推荐)
2021/05/26 MySQL