一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

PHP中獲取變量的變量名的一段代碼的bug分析

復制代碼 代碼如下:
/**
* 獲取變量名
*
* @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中獲取變量的變量名的一段代碼的bug分析,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 婷婷亚洲久悠悠色在线播放 | 男人把女人c爽的免费视频 男人操女人免费视频 | 日本久久久久久久中文字幕 | 欧美激情免费a视频 | 国产精品第3页 | 国产成人精品免费视频网页大全 | 热久久最新 | 精品国产免费久久久久久婷婷 | 黄色a级片免费 | 四虎在线精品免费高清在线 | 国产91精品福利在线观看 | 日本污视频网站 | 欧美成人免费午夜影视 | 2021精品国产品免费观看 | 国产综合色在线视频区 | 国产欧美一区二区三区免费看 | 久久99国产乱子伦精品免 | 美女隐私视频黄www视频 | 亚洲精品中文字幕乱码三区一二 | 成人狠狠色综合 | 玖玖免费 | 国产小视频免费 | 东日韩二三区 | 激情婷婷综合久久久久 | 日韩精品高清自在线 | 久久瑟| 国产成人在线免费 | 免费一区二区三区视频狠狠 | 欧美另类xxxx图片 | 普通话对白国产情侣自啪 | 四虎在线永久视频观看 | 国产视频资源 | 男人扒开女人腿使劲桶动态图 | 四虎影院久久 | 精品成人免费一区二区在线播放 | 成 人 黄 色 视频免费播放 | 一级做a爰片久久毛片毛片 一级做a爰片久久毛片美女 | 97夜色 | 亚洲丶国产丶欧美一区二区三区 | 日韩中文一区 | 亚洲一区二区三区四区视频 |