久久久久av_欧美日韩一区二区在线_国产精品三区四区_日韩中字在线

返回列表 發帖
查看: 1486|回復: 2

[求助] function dintval函數存在BUG:

12

主題

87

回帖

220

積分

應用開發者

貢獻
1 點
金幣
71 個
樓主
發表于 2022-5-27 09:23:49 | 只看樓主 |倒序瀏覽 |閱讀模式
function dintval函數存在BUG:
就是這個使用量非常大的函數: https://zhidao.baidu.com/question/554863766.html

后面那里0xffffffff里面判斷0到9個數是否一致就返回原始參數, 如果傳入的參數是前面帶0的:

比如: dintval('04500000000')
返回的也會是字符串'04500000000', 在自身的mysql里面查詢是沒有問題的, 但是如果是要傳輸給別人ajax或者輸出給html時,
然后后續又有判斷 '4500000000' == '04500000000', 就會判斷成不相等, 實際是相等的
我知道答案 回答被采納將會獲得1 貢獻 已有2人回答
回復

使用道具 舉報

12

主題

87

回帖

220

積分

應用開發者

貢獻
1 點
金幣
71 個
沙發
 樓主| 發表于 2022-5-27 09:30:40 | 只看Ta
我知道后面為啥要用strspn去判斷數字, 是因為非64位系統或PHP小于7.1時, php只能處理小于42億的數字,
因為如果系統整體不支持64位的話, 只修復intval這一個函數也是沒有意義的, time()等一大堆基礎函數里面的數字如果大于21億的話執行后同樣也會亂碼不正確的
回復

使用道具 舉報

12

主題

87

回帖

220

積分

應用開發者

貢獻
1 點
金幣
71 個
板凳
 樓主| 發表于 2022-5-27 09:35:59 | 只看Ta
網上教程說要支持大于21億的int數字只要64位系統和安裝64位的PHP說法也是錯的,
就算系統和PHP都是64的, PHP版本如果小于7的話也是不行的, 只有php大于7以上才是完美支持了大于21億的int,
所以在本身就不支持大于21億的前提下只去修復dintval這一個也是沒有意義的, 反而還容易導致出現1樓的BUG
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

  • 關注公眾號
  • 有償服務微信
  • 有償服務QQ

手機版|小黑屋|Discuz! 官方交流社區 ( 皖ICP備16010102號 |皖公網安備34010302002376號 )|網站地圖|star

GMT+8, 2025-9-20 10:22 , Processed in 0.057450 second(s), 24 queries .

Powered by Discuz! W1.0 Licensed

Copyright © 2001-2025 Discuz! Team.

關燈 在本版發帖
有償服務QQ
有償服務微信
返回頂部
快速回復 返回頂部 返回列表