康老师艾滋病康复网,内容丰富有趣,生活中的好帮手!
康老师艾滋病康复网 > PHP中获取变量的变量名的一段代码的bug分析【PHP】

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

时间:2022-04-07 06:32:40

相关推荐

后端开发|php教程

变量名

后端开发-php教程

五的源码,ubuntu如何卸载依赖,爬虫排列三,php的规律,湖州seo平台lzw

/**

* 获取变量名

*

* @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下来后发现这个怎么测试结果有时候对有时候不对,想了很久,终于弄明白,虽然很简单,但是自己还是记录下,希望遇到同样情况的同学注意。

比如:现在我测试

.net多用户商城源码,乌班图怎么打开VScode,ubuntu网络架设,配置tomcat外网地址,论坛爬虫下载,php 生成随机颜色代码,连江网页seo费用是多少,多网站授权源码,dedecms企业站模板lzw

$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),即恒等。

如果我理解错了欢迎您指正,一起进步。

体彩投注app 源码,ubuntu 手动升级内核,tomcat啓動不起來,小爬虫幼虫,云效如何部署php,公司seo稿件lzw

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。