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 删除数组元素
Jan 16 PHP
探讨:web上存漏洞及原理分析、防范方法
Jun 29 PHP
php计算整个目录大小的方法
Jun 19 PHP
PHP使用file_get_content设置头信息的方法
Feb 14 PHP
PHP将页面中点击数量高的链接进行高亮显示的方法
May 30 PHP
Yii2中cookie用法示例分析
Jul 18 PHP
PHP会话操作之cookie用法分析
Sep 28 PHP
PHP实现的简单sha1加密功能示例
Aug 27 PHP
PHP 断点续传实例详解
Nov 11 PHP
php弹出提示框的是实例写法
Sep 26 PHP
Laravel 修改默认日志文件名称和位置的例子
Oct 17 PHP
TP3.2.3框架文件上传操作实例详解
Jan 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编程最快明白》第八讲:php启发和小结
2010/11/01 PHP
11个PHPer必须要了解的编程规范
2014/09/22 PHP
CodeIgniter针对lighttpd服务器URL重写的方法
2015/06/10 PHP
ThinkPHP进程计数类Process用法实例详解
2015/09/25 PHP
php组合排序简单实现方法
2016/10/15 PHP
PHP二维数组去重算法
2016/12/17 PHP
PHP简单计算两个时间差的方法示例
2017/06/20 PHP
js中cookie的使用详细分析
2008/05/28 Javascript
jQuery学习笔记(4)--Jquery中获取table中某列值的具体思路
2013/04/10 Javascript
在jquery boxy中添加百度地图坐标拾取注意流程
2014/04/03 Javascript
D3.js 从P元素的创建开始(显示可加载数据)
2014/10/30 Javascript
JS倒计时代码汇总
2014/11/25 Javascript
jQuery实现多按钮单击变色
2014/11/27 Javascript
javascript进行四舍五入方法汇总
2014/12/16 Javascript
ExpressJS入门实例
2015/01/14 Javascript
1秒50万字!js实现关键词匹配
2016/08/01 Javascript
JavaScript中 ES6 generator数据类型详解
2016/08/11 Javascript
jQuery实现Table表格隔行变色及高亮显示当前选择行效果示例
2017/02/14 Javascript
BootStrap表单宽度设置方法
2017/03/10 Javascript
vue+ElementUI实现订单页动态添加产品数据效果实例代码
2017/07/13 Javascript
JavaScript实现省市联动过程中bug的解决方法
2017/12/04 Javascript
javascript Canvas动态粒子连线
2020/01/01 Javascript
vue学习笔记之slot插槽用法实例分析
2020/02/29 Javascript
Python SVM(支持向量机)实现方法完整示例
2018/06/19 Python
详解DeBug Python神级工具PySnooper
2019/07/03 Python
使用Python的Turtle绘制哆啦A梦实例
2019/11/21 Python
python 实现保存最新的三份文件,其余的都删掉
2019/12/22 Python
python库skimage给灰度图像染色的方法示例
2020/04/27 Python
django Layui界面点击弹出对话框并请求逻辑生成分页的动态表格实例
2020/05/12 Python
python实现控制台输出颜色
2021/03/02 Python
Html5新标签datalist实现输入框与后台数据库数据的动态匹配
2017/05/18 HTML / CSS
美国网上鞋城:Shoeline.com
2016/11/17 全球购物
struct和class的区别
2015/11/20 面试题
介绍一下linux的文件系统
2015/10/06 面试题
光学与应用专业毕业生求职信
2014/09/01 职场文书
mysql自增长id用完了该怎么办
2022/02/12 MySQL