PHP中获取变量的变量名的一段代码的bug分析


Posted in PHP onJuly 07, 2011
/** 
* 获取变量名 
* 
* @param $string 
* @return $string 
* 
* $test = "helo"; 
* $test2 = "helo"; 
* getVarName($test2); 
*/ 
function getVarName(&$src){ 
//存储当前变量值 
$save = $src; 
//存储所有变量值 
$allvar = $GLOBALS; 
//在函数中不要直拉遍历$GLOBALS,会出现堆栈问题 
foreach($allvar as $k=>$v){ 
//变量值相同,可能不是相同变量,因多个变量的值可能相同 
if ($src == $v){ 
//改变当前变量$src的值 
$src = 'change'; 
//如果$GLOBALS[$k]也跟着改变,那就是同一个变量。 
if ($src == $GLOBALS[$k]){ 
//echo "\$$k name is $k 
"; 
//还原变量值 
$src = $save; 
return $k; 
} 
} 
} 
}

copy下来后发现这个怎么测试结果有时候对有时候不对,想了很久,终于弄明白,虽然很简单,但是自己还是记录下,希望遇到同样情况的同学注意。
比如:现在我测试
$test2 = "hello"; 
$countNum=0; 
echo getVarName($test2); 
//按道理应该输出为”test2“,但是输出的是"countNum",

因为函数中的
if ($src == $v) 这里存在问题 比如$src="hello", $GLOBALS里面有个变量$countNUm=0;
这时在循环的时候判断 if ($src == $v) ,即"hello"==0,比较的结果为true,类型转换的时候“hello“转为整形为0,
然后就退出循环了,得到错误的结果。
一个解决办法就是 if ($src == $v) 改为 if($src===$v),即恒等。
如果我理解错了欢迎您指正,一起进步。
PHP 相关文章推荐
如何使用动态共享对象的模式来安装PHP
Oct 09 PHP
PHP 杂谈《重构-改善既有代码的设计》之一 重新组织你的函数
Apr 09 PHP
php中get_headers函数的作用及用法的详细介绍
Apr 27 PHP
PHP文件锁定写入实例解析
Jul 14 PHP
THINKPHP项目开发中的日志记录实例分析
Dec 01 PHP
php中将一个对象保存到Session中的方法
Mar 13 PHP
thinkPHP分组后模板无法加载问题解决方法
Jul 12 PHP
php车辆违章查询数据示例
Oct 14 PHP
CI框架实现优化文件上传及多文件上传的方法
Jan 04 PHP
php使用Jpgraph创建折线图效果示例
Feb 15 PHP
PHP用户注册邮件激活账户的实现代码
May 31 PHP
PHP+Redis 消息队列 实现高并发下注册人数统计的实例
Jan 29 PHP
PHP的一个基础知识 表单提交
Jul 04 #PHP
php与mysql建立连接并执行SQL语句的代码
Jul 04 #PHP
PHP全概率运算函数(优化版) Webgame开发必备
Jul 04 #PHP
php守护进程 加linux命令nohup实现任务每秒执行一次
Jul 04 #PHP
ajax 的post方法实例(带循环)
Jul 04 #PHP
php高级编程-函数-郑阿奇
Jul 04 #PHP
php 日期和时间的处理-郑阿奇(续)
Jul 04 #PHP
You might like
php中定义网站根目录的常用方法
2010/08/08 PHP
php中json_encode中文编码问题分析
2011/09/13 PHP
php将gd生成的图片缓存到memcache的小例子
2013/06/05 PHP
PHP使用file_get_content设置头信息的方法
2016/02/14 PHP
使用PHP处理数据库数据如何将数据返回客户端并显示当前状态
2016/02/16 PHP
php实现图片上传并利用ImageMagick生成缩略图
2016/03/14 PHP
php实现简单加入购物车功能
2017/03/07 PHP
PHP实现的解汉诺塔问题算法示例
2018/08/06 PHP
jquery 操作单选框,复选框,下拉列表实现代码
2009/10/27 Javascript
DOM基础教程之使用DOM + Css
2015/01/20 Javascript
简介JavaScript中的setTime()方法的使用
2015/06/11 Javascript
jQuery操作iframe中js函数的方法小结
2016/07/06 Javascript
前端 Vue.js 和 MVVM 详细介绍
2016/12/29 Javascript
Vue2.0+ElementUI实现表格翻页的实例
2017/10/23 Javascript
JavaScript如何实现元素全排列实例代码
2019/05/14 Javascript
React传值 组件传值 之间的关系详解
2019/08/26 Javascript
使用Vue.js中的过滤器实现幂方求值的方法
2019/08/27 Javascript
原生js实现自定义难度的扫雷游戏
2021/01/22 Javascript
python实现代码行数统计示例分享
2014/02/10 Python
python服务器与android客户端socket通信实例
2014/11/12 Python
python编程培训 python培训靠谱吗
2018/01/17 Python
python实现SOM算法
2018/02/23 Python
基于python绘制科赫雪花
2018/06/22 Python
Python实现字符型图片验证码识别完整过程详解
2019/05/10 Python
Python使用scipy模块实现一维卷积运算示例
2019/09/05 Python
浅析NumPy 切片和索引
2020/09/02 Python
python 匿名函数与三元运算学习笔记
2020/10/23 Python
python软件测试Jmeter性能测试JDBC Request(结合数据库)的使用详解
2021/01/26 Python
canvas绘制太极图的实现示例
2020/04/29 HTML / CSS
建筑工程专业学生的自我评价
2013/12/25 职场文书
党员群众路线教育实践活动剖析材料
2014/10/10 职场文书
2014财务年度工作总结
2014/11/11 职场文书
2014年大学班级工作总结
2014/11/14 职场文书
困难补助申请报告
2015/05/19 职场文书
PostgreSQL并行计算算法及参数强制并行度设置方法
2022/04/06 PostgreSQL
CSS使用SVG实现动态分布的圆环发散路径动画
2022/12/24 HTML / CSS