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 相关文章推荐
别人整理的服务器变量:$_SERVER
Oct 20 PHP
echo, print, printf 和 sprintf 区别
Dec 06 PHP
php session_start()关于Cannot send session cache limiter - headers already sent错误解决方法
Nov 27 PHP
Godaddy空间Zend Optimizer升级方法
May 10 PHP
php SQL Injection with MySQL
Feb 27 PHP
php fputcsv命令 写csv文件遇到的小问题(多维数组连接符)
May 24 PHP
介绍一些PHP判断变量的函数
Apr 24 PHP
php fsockopen伪造post与get方法的详解
Jun 14 PHP
PHP 伪静态技术原理以及突破原理实现介绍
Jul 12 PHP
php实现的统计字数函数定义与使用示例
Jul 26 PHP
thinkphp5框架实现数据库读取的数据转换成json格式示例
Oct 10 PHP
PHP命名空间(namespace)原理与用法详解
Dec 11 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中如何调用webservice的实例参考
2013/04/25 PHP
php获取网页请求状态程序示例
2014/06/17 PHP
PHP中文编码小技巧
2014/12/25 PHP
浅析php设计模式之数据对象映射模式
2016/03/03 PHP
PHP自定义函数获取汉字首字母的方法
2016/12/01 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
2018/06/13 PHP
PHP实现Snowflake生成分布式唯一ID的方法示例
2020/08/30 PHP
PHP 实现base64编码文件上传出现问题详解
2020/09/01 PHP
Git命令之分支详解
2021/03/02 PHP
JavaScript对象之深度克隆介绍
2014/12/08 Javascript
JQuery右键菜单插件ContextMenu使用指南
2014/12/19 Javascript
javascript实现判断鼠标的状态
2015/07/10 Javascript
基于jquery实现ajax无刷新评论
2020/08/19 Javascript
jQuery移动端图片上传组件
2016/06/12 Javascript
jQuery简单实现彩色云标签效果示例
2016/08/01 Javascript
JS实现点击网页判断是否安装app并打开否则跳转app store
2016/11/18 Javascript
如何在Angular.JS中接收并下载PDF
2016/11/26 Javascript
详解微信小程序 通过控制CSS实现view隐藏与显示
2017/05/24 Javascript
vue中Axios的封装与API接口的管理详解
2018/08/09 Javascript
node实现简单的增删改查接口实例代码
2019/08/22 Javascript
javascript如何实现create方法
2019/11/04 Javascript
解决vue elementUI中table里数字、字母、中文混合排序问题
2020/01/07 Javascript
通过Kettle自定义jar包供javascript使用
2020/01/29 Javascript
JS中间件设计模式的深入探讨与实例分析
2020/04/11 Javascript
[01:32]2016国际邀请赛中国区预选赛CDEC战队教练采访
2016/06/26 DOTA
python二分法实现实例
2013/11/21 Python
Django实现学生管理系统
2019/02/26 Python
连接pandas以及数组转pandas的方法
2019/06/28 Python
Python列表切片常用操作实例解析
2019/12/16 Python
生产部厂长助理职位说明书
2014/03/03 职场文书
保密承诺书范文
2014/03/27 职场文书
护士节演讲稿开场白
2014/08/25 职场文书
2014年德育工作总结
2014/11/20 职场文书
法务专员岗位职责
2015/02/14 职场文书
办公室个人总结
2015/02/28 职场文书
幼儿园园长个人总结
2015/03/02 职场文书