我想在數據庫中存儲整數值,對於那個使用(int)類型強制轉換的$ _POST值。但它評估的是另一個值,而不是提交的整數。PHP int類型轉換生成錯誤的值
echo (int)0444444;
輸出
149796
請幫助。
我想在數據庫中存儲整數值,對於那個使用(int)類型強制轉換的$ _POST值。但它評估的是另一個值,而不是提交的整數。PHP int類型轉換生成錯誤的值
echo (int)0444444;
輸出
149796
請幫助。
加上前綴0
的整數意味着如果要一個字符串轉換爲整數,應當解釋爲八進制值,即,基座8的代替基座10
0444444 (OCT) = 149796 (DEC)
,代替你可以使用intval()
,它可以選擇允許你指定基數爲10.
在你的例子中,強制轉換是從int轉換爲int(0444444已被解釋爲一個整數),所以你的轉換是一個沒有操作。
謝謝但回聲intval('03894563333',10);仍然評估另一個值... – TPSstar
@TPSstar在32位PHP中,最大int值爲'2147483647' –
@TPSstar由於您在32位平臺上運行,最大可能的int值爲2147483647('PHP_INT_MAX' 32位平臺),轉換在64位PHP上運行良好,並返回預期結果。如果您需要大於'PHP_INT_MAX'的數字,則需要使用另一個數據類型而不是整數。 –
'0444444'已經是一個整數,鑄造在這裏什麼都不做;您只需選擇以八進制(基數8)表示法進行編寫,而不是使用更常用的十進制(基數10)表示法。 – salathe
請注意,您提到「*在$ _POST值*上使用(int)類型轉換」,但您的示例使用整數。除非您手動更改它們,否則'$ _POST'值總是*字符串*。 – salathe
好點,我沒有注意到在例子..但實際上我得到奇怪的值在我的表單處理使用int typecasting $ _POST。 – TPSstar