中文字幕日韩一区二区_国产一区二区av_国产毛片av_久久久久国产一区_色婷婷电影_国产一区二区精品

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

復(fù)制代碼 代碼如下:
/**
* 獲取變量名
*
* @param $string
* @return $string
*
* $test = "helo";
* $test2 = "helo";
* getVarName($test2);
*/
function getVarName(&$src){
//存儲當(dāng)前變量值
$save = $src;
//存儲所有變量值
$allvar = $GLOBALS;
//在函數(shù)中不要直拉遍歷$GLOBALS,會出現(xiàn)堆棧問題
foreach($allvar as $k=>$v){
//變量值相同,可能不是相同變量,因多個(gè)變量的值可能相同
if ($src == $v){
//改變當(dāng)前變量$src的值
$src = 'change';
//如果$GLOBALS[$k]也跟著改變,那就是同一個(gè)變量。
if ($src == $GLOBALS[$k]){
//echo "/$$k name is $k
";
//還原變量值
$src = $save;
return $k;
}
}
}
}

copy下來后發(fā)現(xiàn)這個(gè)怎么測試結(jié)果有時(shí)候?qū)τ袝r(shí)候不對,想了很久,終于弄明白,雖然很簡單,但是自己還是記錄下,希望遇到同樣情況的同學(xué)注意。
比如:現(xiàn)在我測試
復(fù)制代碼 代碼如下:
$test2 = "hello";
$countNum=0;
echo getVarName($test2);
//按道理應(yīng)該輸出為”test2“,但是輸出的是"countNum",

因?yàn)楹瘮?shù)中的
if ($src == $v) 這里存在問題 比如$src="hello", $GLOBALS里面有個(gè)變量$countNUm=0;
這時(shí)在循環(huán)的時(shí)候判斷 if ($src == $v) ,即"hello"==0,比較的結(jié)果為true,類型轉(zhuǎn)換的時(shí)候“hello“轉(zhuǎn)為整形為0,
然后就退出循環(huán)了,得到錯(cuò)誤的結(jié)果。
一個(gè)解決辦法就是 if ($src == $v) 改為 if($src===$v),即恒等。
如果我理解錯(cuò)了歡迎您指正,一起進(jìn)步。

php技術(shù)PHP中獲取變量的變量名的一段代碼的bug分析,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 日韩a视频 | 日韩激情在线 | 亚洲综合热 | 很很干很很日 | 精品日韩一区二区三区av动图 | 精品久久久久久久久久久久久久久久久 | 国内精品视频 | www.久久| 国产农村妇女毛片精品久久麻豆 | 国产午夜精品久久久久免费视高清 | 一区二区三区视频在线 | 亚av在线| 人人艹人人爽 | 国产一区二区在线免费 | 国产亚洲成av人片在线观看桃 | 在线观看视频91 | 国产不卡视频 | 欧美精品第一区 | 国产在线色 | 波多野结衣电影一区 | 精国产品一区二区三区 | 免费福利视频一区二区三区 | 日本高清aⅴ毛片免费 | 国产三区av | 婷婷激情综合 | 啪一啪 | 国产精品福利在线观看 | 在线免费看黄 | 欧美极品少妇xxxxⅹ免费视频 | 久热电影 | 亚洲综合色丁香婷婷六月图片 | 久久久久久久久久久国产 | 国产精品精品视频一区二区三区 | www.欧美| 精品国产91乱码一区二区三区 | 国产一区二区小视频 | 天天看天天操 | 欧美videosex性极品hd | 宅男伊人 | 在线视频亚洲 | 99久久国产精 |