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将数据库中所有内容生成静态html文档的代码
Apr 12 PHP
PHP中的string类型使用说明
Jul 27 PHP
php函数之子字符串替换 str_replace
Mar 23 PHP
php 定义404页面的实现代码
Nov 19 PHP
PHP引用符&的用法详细解析
Aug 22 PHP
Yii分页用法实例详解
Dec 04 PHP
php中mail函数发送邮件失败的解决方法
Dec 24 PHP
PHP批量去除BOM头内容信息代码
Mar 11 PHP
Yii2中使用join、joinwith多表关联查询
Jun 30 PHP
PHP mysqli_free_result()与mysqli_fetch_array()函数详解
Sep 21 PHP
php实现数组纵向转横向并过滤重复值的方法分析
May 29 PHP
laravel 中某一字段自增、自减的例子
Oct 11 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写的serv-u的web申请账号的程序
2006/10/09 PHP
php下判断数组中是否存在相同的值array_unique
2008/03/25 PHP
检测png图片是否完整的php代码
2010/09/06 PHP
IIS+fastcgi下PHP运行超时问题的解决办法详解
2013/06/20 PHP
php中实现进程锁与多进程的方法
2016/09/18 PHP
mysql alter table命令修改表结构实例详解
2016/09/24 PHP
JavaScript关于select的相关操作说明
2010/01/13 Javascript
javascript jscroll模拟html元素滚动条
2012/12/18 Javascript
js hover 定时器(实例代码)
2013/11/12 Javascript
js日期对象兼容性的处理方法
2014/01/28 Javascript
JavaScript学习笔记之定时器
2015/01/22 Javascript
JQuery实现动态适时改变字体颜色的方法
2015/03/10 Javascript
JavaScript获取网页支持表单字符集的方法
2015/04/02 Javascript
jquery+css实现绚丽的横向二级下拉菜单-附源码下载
2015/08/23 Javascript
jQuery实现带幻灯的tab滑动切换风格菜单代码
2015/08/27 Javascript
jQuery简单实现iframe的高度根据页面内容自适应的方法
2016/08/01 Javascript
BootStrap中Datepicker控件带中文的js文件
2016/08/10 Javascript
5种JavaScript脚本加载的方式
2017/01/16 Javascript
node中的密码安全(加密)
2018/09/17 Javascript
vue实现类似淘宝商品评价页面星级评价及上传多张图片功能
2018/10/29 Javascript
JS使用Dijkstra算法求解最短路径
2019/01/17 Javascript
vue keep-alive列表页缓存 详情页返回上一页不刷新,定位到之前位置
2019/11/26 Javascript
javascript设计模式之迭代器模式
2020/01/30 Javascript
Vue文本模糊匹配功能如何实现
2020/07/30 Javascript
Python下的常用下载安装工具pip的安装方法
2015/11/13 Python
Python使用Selenium模块模拟浏览器抓取斗鱼直播间信息示例
2018/07/18 Python
学习Python需要哪些工具
2020/09/04 Python
Python request中文乱码问题解决方案
2020/09/17 Python
Python 实现国产SM3加密算法的示例代码
2020/09/21 Python
Python xlwings插入Excel图片的实现方法
2021/02/26 Python
有趣的睡衣和礼物:LazyOne
2019/11/27 全球购物
瑞士首家网上药店折扣店:McDrogerie
2020/12/22 全球购物
工作自荐信
2013/12/11 职场文书
培训班通知
2015/04/25 职场文书
芙蓉镇观后感
2015/06/10 职场文书
Element实现动态表格的示例代码
2021/08/02 Javascript