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 相关文章推荐
dedecms采集中可以过滤多行代码的正则表达式
Mar 17 PHP
关于php fread()使用技巧
Jan 22 PHP
PHP实现多条件查询实例代码
Jul 17 PHP
深入php define()函数以及defined()函数的用法详解
Jun 05 PHP
自定义session存储机制避免会话保持问题
Oct 08 PHP
Laravel 5框架学习之路由、控制器和视图简介
Apr 07 PHP
基于linnux+phantomjs实现生成图片格式的网页快照
Apr 15 PHP
php图像验证码生成代码
Jun 08 PHP
浅谈php使用curl模拟多线程发送请求
Mar 08 PHP
php设计模式之工厂模式用法经典实例分析
Sep 20 PHP
在laravel中使用with实现动态添加where条件
Oct 10 PHP
tp5框架前台无限极导航菜单类实现方法分析
Mar 29 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
用libTemplate实现静态网页的生成
2006/10/09 PHP
也谈 PHP 和 MYSQL
2006/10/09 PHP
在 PHP 中使用随机数的三个步骤
2006/10/09 PHP
PHP设计模式之结构模式的深入解析
2013/06/13 PHP
php中的抽象方法和抽象类
2017/02/14 PHP
thinkphp5 加载静态资源路径与常量的方法
2017/12/24 PHP
PHP使用函数用法详解
2018/09/30 PHP
php实现二叉树中和为某一值的路径方法
2018/10/14 PHP
Linux基于php-fpm模式的lamp搭建phpmyadmin的方法
2018/10/25 PHP
Thinkphp 框架扩展之应用模式实现方法分析
2020/04/27 PHP
简单实例处理url特殊符号&amp;处理(2种方法)
2013/04/02 Javascript
javascript实现的平方米、亩、公顷单位换算小程序
2014/08/11 Javascript
使用jquery+CSS实现控制打印样式
2014/12/31 Javascript
JQuery为元素添加样式的实现方法
2016/07/20 Javascript
对vue里函数的调用顺序介绍
2018/03/17 Javascript
Vue中 v-if 和v-else-if页面加载出现闪现的问题及解决方法
2018/10/12 Javascript
JS脚本实现定时到网站上签到/签退功能
2020/04/22 Javascript
python基础教程之Filter使用方法
2017/01/17 Python
python 文件操作删除某行的实例
2017/09/04 Python
在python中pandas读文件,有中文字符的方法
2018/12/12 Python
PyQt编程之如何在屏幕中央显示窗体的实例
2019/06/18 Python
PYTHON如何读取和写入EXCEL里面的数据
2019/10/28 Python
Python中BeautifuSoup库的用法使用详解
2019/11/15 Python
Python标准库shutil模块使用方法解析
2020/03/10 Python
python异常处理、自定义异常、断言原理与用法分析
2020/03/23 Python
详解Pytorch显存动态分配规律探索
2020/11/17 Python
HTML5 Canvas基本线条绘制的实例教程
2016/03/17 HTML / CSS
Mountain Warehouse澳大利亚官网:欧洲家庭户外品牌倡导者
2016/11/20 全球购物
eBay荷兰购物网站:eBay.nl
2020/06/26 全球购物
简单介绍Object类的功能、常用方法
2013/10/02 面试题
创新比赛获奖感言
2014/02/13 职场文书
逃课上网检讨书
2014/02/20 职场文书
十佳中学生事迹材料
2014/06/02 职场文书
会员卡清退活动总结
2014/08/27 职场文书
大学生求职自荐信范文
2015/03/04 职场文书
2019年最新七夕唯美祝福语(60条)
2019/07/22 职场文书