變數名 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;
}
}
}
}
比如:現在我測試
複製代碼 代碼如下:
$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中取得變數的變數名稱的一段程式碼的bug分析,包含了變數名稱方面的內容,希望對PHP教學有興趣的朋友有所幫助。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

文章討論了PHP 5.3中介紹的PHP中的晚期靜態結合(LSB),允許靜態方法的運行時間分辨率調用以更靈活的繼承。 LSB的實用應用和潛在的觸摸

SOLID原則在PHP開發中的應用包括:1.單一職責原則(SRP):每個類只負責一個功能。 2.開閉原則(OCP):通過擴展而非修改實現變化。 3.里氏替換原則(LSP):子類可替換基類而不影響程序正確性。 4.接口隔離原則(ISP):使用細粒度接口避免依賴不使用的方法。 5.依賴倒置原則(DIP):高低層次模塊都依賴於抽象,通過依賴注入實現。

使用PHP的cURL庫發送JSON數據在PHP開發中,經常需要與外部API進行交互,其中一種常見的方式是使用cURL庫發送POST�...

如何在系統重啟後自動設置unixsocket的權限每次系統重啟後,我們都需要執行以下命令來修改unixsocket的權限:sudo...
