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

Discuz! 官方交流社區

標題: function dintval函數存在BUG: [打印本頁]

作者: jiangchuankyo    時間: 2022-5-27 09:23
標題: function dintval函數存在BUG:
function dintval函數存在BUG:
就是這個使用量非常大的函數: https://zhidao.baidu.com/question/554863766.html

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

比如: dintval('04500000000')
返回的也會是字符串'04500000000', 在自身的mysql里面查詢是沒有問題的, 但是如果是要傳輸給別人ajax或者輸出給html時,
然后后續又有判斷 '4500000000' == '04500000000', 就會判斷成不相等, 實際是相等的

作者: jiangchuankyo    時間: 2022-5-27 09:30
我知道后面為啥要用strspn去判斷數字, 是因為非64位系統或PHP小于7.1時, php只能處理小于42億的數字,
因為如果系統整體不支持64位的話, 只修復intval這一個函數也是沒有意義的, time()等一大堆基礎函數里面的數字如果大于21億的話執行后同樣也會亂碼不正確的
作者: jiangchuankyo    時間: 2022-5-27 09:35
網上教程說要支持大于21億的int數字只要64位系統和安裝64位的PHP說法也是錯的,
就算系統和PHP都是64的, PHP版本如果小于7的話也是不行的, 只有php大于7以上才是完美支持了大于21億的int,
所以在本身就不支持大于21億的前提下只去修復dintval這一個也是沒有意義的, 反而還容易導致出現1樓的BUG




歡迎光臨 Discuz! 官方交流社區 (http://www.9999xn.com/) Powered by Discuz! W1.0