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 相关文章推荐
让你同时上传 1000 个文件 (二)
Oct 09 PHP
首页四格,首页五格For6.0(GBK)(UTF-8)[12种组合][9-18][版主安装测试通过]
Sep 24 PHP
php存储过程调用实例代码
Feb 03 PHP
解析在zend Farmework下如何创立一个FORM表单
Jun 28 PHP
php中的curl_multi系列函数使用例子
Jul 29 PHP
thinkphp中session和cookie无效的解决方法
Dec 19 PHP
PHP实现多图上传(结合uploadify插件)思路分析
Nov 30 PHP
php中分页及SqlHelper类用法实例
Jan 12 PHP
详解PHP PDO简单教程
May 28 PHP
Laravel 自定命令以及生成文件的例子
Oct 23 PHP
PHP数据源架构模式之表入口模式实例分析
Jan 23 PHP
解析laravel使用workerman用户交互、服务器交互
Apr 28 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/12/03 PHP
PHP strtotime函数详解
2009/12/18 PHP
PHP遍历XML文档所有节点的方法
2015/03/12 PHP
PHP异常处理定义与使用方法分析
2017/07/25 PHP
详解Laravel5.6 Passport实现Api接口认证
2018/07/27 PHP
在IE下:float属性会影响offsetTop的取值
2006/12/22 Javascript
jquery jqPlot API 中文使用教程(非常强大的图表工具)
2011/08/15 Javascript
JavaScript实现多维数组的方法
2013/11/20 Javascript
jquery简单实现外部链接用新窗口打开的方法
2015/05/30 Javascript
Javascript简单实现面向对象编程继承实例代码
2015/11/27 Javascript
聊聊JavaScript如何实现继承及特点
2017/04/07 Javascript
JavaScript手风琴页面制作
2017/05/17 Javascript
基于Node.js模板引擎教程-jade速学与实战1
2017/09/17 Javascript
详解如何用模块化的方式写vuejs
2017/12/16 Javascript
js中Object.defineProperty()方法的不详解
2018/07/09 Javascript
微信小程序页面间传值与页面取值操作实例分析
2019/04/30 Javascript
js实现简单进度条效果
2020/03/25 Javascript
JS实现小米轮播图
2020/09/21 Javascript
微信小程序实现转盘抽奖
2020/09/21 Javascript
在Vue中使用Viser说明(基于AntV-G2可视化引擎)
2020/10/28 Javascript
Vue——解决报错 Computed property &quot;****&quot; was assigned to but it has no setter.
2020/12/19 Vue.js
python正则表达式及使用正则表达式的例子
2018/01/22 Python
python使用pandas实现数据分割实例代码
2018/01/25 Python
基于随机梯度下降的矩阵分解推荐算法(python)
2018/08/31 Python
对pandas的层次索引与取值的新方法详解
2018/11/06 Python
django 实现编写控制登录和访问权限控制的中间件方法
2019/01/15 Python
python单向链表的基本实现与使用方法【定义、遍历、添加、删除、查找等】
2019/10/24 Python
Restful_framework视图组件代码实例解析
2020/11/17 Python
中国跨境电子商务网站:NewFrog
2018/03/10 全球购物
I.T集团香港官方商城:ITeSHOP.com Hong Kong
2019/02/15 全球购物
公共汽车、火车和飞机票的通用在线预订和销售平台:INFOBUS
2019/11/30 全球购物
2014年幼儿园学期工作总结
2014/12/05 职场文书
雨花台导游词
2015/02/06 职场文书
合作协议书格式范本
2016/03/21 职场文书
2019学校请假条格式及范文
2019/06/25 职场文书
postgresql之greenplum字符串去重拼接方式
2023/05/08 PostgreSQL