php類型轉換相關的一個bug(php類型轉換的兩種方法)

本文目錄一覽:

php運算, 這是bug? 輸出的是 true?

不是bug,是你的用法不嚴謹。

直接 echo $x1 == $x2 的確為true,原因是雙等號是不嚴格的比較。php在做==比較時,當發現變數的內容是數字時,會嘗試把數字轉換成整型或浮點型後再比較,由於你給的串太長,導致溢出,參於比較的位數肯定是相等的。

兩個解決方案:

1)使用恆等比較 ===,這個比較能正確處理。

2)兩個字元串比較嚴謹的用法是用strcmp($x1,$x3);看比較的結果值。為0才是兩個串相等。

php程序員寫的代碼為什麼總有bug

弱類型以及即編即譯等等靈活的特性,註定PHP必須要有犧牲一定的穩定性的前提來達到。換句話說,通常JAVA中一些BUG可以通過編譯機制可以儘早的扼殺早搖籃之中,即使是運行期的錯誤,也可以通過編譯機制找到。同時,強類型語言的嚴謹的代碼編寫風格,也不容易出現由弱類型語言中那些讓人又愛又恨的類型自動轉換髮生的意想不到的行為。

最終,我可以認為PHP為了快速開發,做出了他應有的犧牲。把更多的代碼控制權力交給程序員,而不是交給機器,這也意味著代碼的有效性考驗著作為程序員本身的編程能力。更可能是程序員本身對編程思想的理解程度。不過,PHP大多數都是用來開發web站點,而且還有很龐大的社區,以及許多優秀的框架,這些都可以幫助PHP程序員在開發中減少不必要的麻煩。

BUG不可避免,BUG與否決定在你!

個人經驗,少年,你如果要開發應用的話,這個年代不用框架,就等於自己為自己增加N倍的難度。在下推薦幾款框架給你吧:

LARAVAL (強力推薦),YII,codeigniter…….

為什麼PHP中 echo (“00000″==”000000”); 返回的值為1? 五個0與六個0的字元串居然相等!

對於比較運算符「==」,如果比較一個數字和字元串或者比較涉及到數字內容的字元串,則字元串會被轉換為數值並且比較按照數值來進行。

所以,如下字元串中,轉換為數值之後相等而輸出1。

?php

echo (“0″==”000000”);//1

echo (“00000″==”000000”);//1

echo (“12345″==”012345”); //1

echo (“10″==”1e1”); //1

?

echo (“12345n”==”012345n”);

由於比較的表達式中兩邊都含有字母,所以均當做字元串來處理而沒有進行轉換,所以沒有輸出1。

另外,當其中的涉及到數字內容的字元串要進行轉換的時候,其開始的值決定轉換後的值,比如:

echo (12345==”012345 我和我的小夥伴們都驚呆了。”); //1

echo (12345==”01234n5″); // 不會輸出1

echo (“12345″==”012345 我和小夥伴們都驚呆了n”); // 這樣也不會輸出1

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/232472.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-11 12:52
下一篇 2024-12-11 12:52

相關推薦

  • int類型變數的細節與注意事項

    本文將從 int 類型變數的定義、聲明、初始化、範圍、運算和類型轉換等方面,對 int 類型變數進行詳細闡述和講解,幫助讀者更好地掌握和應用 int 變數。 一、定義與聲明 int…

    編程 2025-04-29
  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • 解決.net 6.0運行閃退的方法

    如果你正在使用.net 6.0開發應用程序,可能會遇到程序閃退的情況。這篇文章將從多個方面為你解決這個問題。 一、代碼問題 代碼問題是導致.net 6.0程序閃退的主要原因之一。首…

    編程 2025-04-29
  • ArcGIS更改標註位置為中心的方法

    本篇文章將從多個方面詳細闡述如何在ArcGIS中更改標註位置為中心。讓我們一步步來看。 一、禁止標註智能調整 在ArcMap中設置標註智能調整可以自動將標註位置調整到最佳顯示位置。…

    編程 2025-04-29
  • Python中init方法的作用及使用方法

    Python中的init方法是一個類的構造函數,在創建對象時被調用。在本篇文章中,我們將從多個方面詳細討論init方法的作用,使用方法以及注意點。 一、定義init方法 在Pyth…

    編程 2025-04-29
  • Python創建分配內存的方法

    在python中,我們常常需要創建並分配內存來存儲數據。不同的類型和數據結構可能需要不同的方法來分配內存。本文將從多個方面介紹Python創建分配內存的方法,包括列表、元組、字典、…

    編程 2025-04-29
  • 用不同的方法求素數

    素數是指只能被1和自身整除的正整數,如2、3、5、7、11、13等。素數在密碼學、計算機科學、數學、物理等領域都有著廣泛的應用。本文將介紹幾種常見的求素數的方法,包括暴力枚舉法、埃…

    編程 2025-04-29
  • 使用Vue實現前端AES加密並輸出為十六進位的方法

    在前端開發中,數據傳輸的安全性問題十分重要,其中一種保護數據安全的方式是加密。本文將會介紹如何使用Vue框架實現前端AES加密並將加密結果輸出為十六進位。 一、AES加密介紹 AE…

    編程 2025-04-29
  • Python中讀入csv文件數據的方法用法介紹

    csv是一種常見的數據格式,通常用於存儲小型數據集。Python作為一種廣泛流行的編程語言,內置了許多操作csv文件的庫。本文將從多個方面詳細介紹Python讀入csv文件的方法。…

    編程 2025-04-29
  • Python3定義函數參數類型

    Python是一門動態類型語言,不需要在定義變數時顯示的指定變數類型,但是Python3中提供了函數參數類型的聲明功能,在函數定義時明確定義參數類型。在函數的形參後面加上冒號(:)…

    編程 2025-04-29

發表回復

登錄後才能評論