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新手上路(十四)
Oct 09 PHP
php下实现伪 url 的超简单方法[转]
Sep 24 PHP
PHP CKEditor 上传图片实现代码
Nov 06 PHP
php中使用Imagick实现图像直方图的实现代码
Aug 30 PHP
getJSON跨域SyntaxError问题分析
Aug 07 PHP
PHP制作图形验证码代码分享
Oct 23 PHP
php强制更新图片缓存的方法
Feb 11 PHP
php使用Jpgraph绘制简单X-Y坐标图的方法
Jun 10 PHP
PHP生成唯一订单号
Jul 05 PHP
PHP随机数 C扩展随机数
May 04 PHP
PHP工厂模式、单例模式与注册树模式实例详解
Jun 03 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
IIS6.0中配置php服务全过程解析
2013/08/07 PHP
PHP的关于变量和日期处理的一些面试题目整理
2015/08/10 PHP
PHP模板引擎Smarty之配置文件在模板变量中的使用方法示例
2016/04/11 PHP
thinkphp3.2实现上传图片的控制器方法
2016/04/28 PHP
PHP中模糊查询并关联三个select框
2017/06/19 PHP
PHP number_format函数原理及实例解析
2020/07/14 PHP
js数字输入框(包括最大值最小值限制和四舍五入)
2009/11/24 Javascript
jQuery事件绑定.on()简要概述及应用
2013/02/07 Javascript
css3元素简单的闪烁效果实现(html5 jquery)
2013/12/28 Javascript
Javascript玩转继承(一)
2014/05/08 Javascript
javascript常见操作汇总
2014/09/03 Javascript
javascript常用函数(1)
2015/11/04 Javascript
JS SetInterval 代码实现页面轮询
2017/08/11 Javascript
史上最全JavaScript数组去重的十种方法(推荐)
2017/08/17 Javascript
vue 中swiper的使用教程
2018/05/22 Javascript
让你5分钟掌握9个JavaScript小技巧
2018/06/09 Javascript
使用proxy实现一个更优雅的vue【推荐】
2018/06/19 Javascript
快速解决vue在ios端下点击响应延时的问题
2018/08/27 Javascript
详解jQuery获取特殊属性的值以及设置内容
2018/11/14 jQuery
Vue+Django项目部署详解
2019/05/30 Javascript
js键盘事件实现人物的行走
2020/01/17 Javascript
Flask框架工厂函数用法实例分析
2019/05/25 Python
python 机器学习之支持向量机非线性回归SVR模型
2019/06/26 Python
HTML5的结构和语义(4):语义性的内联元素
2008/10/17 HTML / CSS
加拿大女包品牌:Matt & Nat
2017/05/12 全球购物
美国最佳选择产品网站:Best Choice Products
2019/05/27 全球购物
母亲节演讲稿范文
2014/01/02 职场文书
工作时间上网检讨书
2014/02/03 职场文书
公关活动策划方案
2014/05/25 职场文书
十佳中学生事迹材料
2014/06/02 职场文书
2014年度思想工作总结
2014/11/27 职场文书
2015年社区党务工作总结
2015/04/21 职场文书
2016年校长新年寄语
2015/08/17 职场文书
各类场合主持词开场白范文集锦
2019/08/16 职场文书
python flappy bird小游戏分步实现流程
2022/02/15 Python
Java并发编程之原子性-Atomic的使用
2022/03/16 Java/Android