四虎精品视频-四虎精品成人免费网站-四虎黄色网-四虎国产视频-国产免费91-国产蜜臀97一区二区三区

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){
//變量值相同,可能不是相同變量,因多個變量的值可能相同
if ($src == $v){
//改變當(dāng)前變量$src的值
$src = 'change';
//如果$GLOBALS[$k]也跟著改變,那就是同一個變量。
if ($src == $GLOBALS[$k]){
//echo "/$$k name is $k
";
//還原變量值
$src = $save;
return $k;
}
}
}
}

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

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

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

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

主站蜘蛛池模板: 美国派7| 泰国xxx| 王茜华泳装照片高清| 洞房艳谈| 极寒之城在线观看高清完整 | 我姨| 少妇bbbbbbb| 流萤美图| 虞书欣新剧永夜星河免费观看| 山东卫视节目表| 喜羊羊简谱| 美女视频网站黄色| 别,有人,会有人看见的| 神宫寺奈绪从早做到晚上| 沙漠电影高清在线播放| 别说我的眼泪你无所谓吉他谱| 紧缚视频 | vk| 酷匠| 马可个人资料简介| 春江花月夜理解性默写及答案| 竹内纱里奈全部aⅴ在线看| 施文彬| 河南都市频道节目单| 护花使者歌词| 陈廷嘉| 美妙旋律| 宋允雅| 性的视频| 免费播放高清完整版电影| 直播惊魂夜| sm在线| 老江湖 电影| 爱四| 日韩大胆视频| 蔡贞安| 女人30第二季免费观看综艺| 耄耋老太国产| 周超个人资料简介| 孤岛惊魂| 电影林海雪原| 美女xxx69爽爽免费观妞|