多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > PHP獲取變量的變量名的一段代碼的bug

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

來源:程序員人生   發布時間:2013-12-08 01:08:35 閱讀次數:3601次

百度一下關于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),即恒等。

如果我理解錯了歡迎您指正,一起進步。

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 美国一区二区三区 | 亚洲视频免 | 亚洲精国产一区二区三区 | 亚洲线精品一区二区三区 | 免费毛片网站 | xxxx性欧美 | 免费在线观看黄色的网站 | 一级毛片不卡 | 日韩中文精品亚洲第三区 | 中文字幕第9页 | 一级做a爰片性色毛片刺激 一级做a爰片性色毛片黄书 | 国产亚洲福利精品一区二区 | 欧美性受xxxx白人性爽网站 | 欧美一级在线观看播放 | 亚洲视频在线观看免费视频 | 日韩欧美亚洲另类 | 尤物视频免费观看 | 女女同性一区二区三区四区 | 黑色丝袜高跟国产在线91 | 久草在线观看首页 | 久久精品国产一区二区三区不卡 | 男女激情视频网站 | 亚洲在线中文字幕 | 伊人中文网 | 欧美一区二区三区视频在线 | 成人在线观看不卡 | 激情 黄 +色+成+人 | 免费又黄又爽又猛大片午夜 | 在线观看免费亚洲 | 欧美亚洲国产视频 | 亚洲国产日韩在线观频 | 精品国产一区二区三区不卡在线 | 一本久道久久综合中文字幕 | 宇都宫紫苑(rion)在线播放 | 日韩中文字幕久久精品 | 国产欧美日韩综合精品一区二区 | 亚洲成人一区在线 | 一级做a免费视频观看网站 一级做a爰片久久毛片 | 亚洲精品国产第一区二区多人 | 一级特黄aa大片欧美网站 | 亚洲大片免费看 |