程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP內置函數32位和64位平台兼容性問題

PHP內置函數32位和64位平台兼容性問題

編輯:關於PHP編程

  幫客之家(www.Bkjia.com)教程 PHP 中的整數是 C 語言的中的long 類型,是有符號的,最大值是 2^31 。在 64 位平台上,long可以達到 2^63.

  這樣的話,有些PHP 函數輸出的結果在各個平台上就會不一致了。

  php -r "echo ip2long('255.255.255.255');" 在64位平台下是: 4294967295, 在32位平台下是 -1。還有比如 filesize 在 文件 大於 2G的時候,在不同的平台下結果就不一致了。

  解決這個問題很簡單,sprintf("%u", filesize($file)). 把結果轉換為 一個字符串。為什麼結果會一樣呢:無符號數 4294967295 的補碼 和 有符號數 -1 的補碼 是一樣的。類似,返回值為int 最後結果可能大於 2^31 的函數,都要用這樣的方法處理。

  注意,返回的雖然是一個字符串,但是,當進行四則運算的時候,PHP會自動裝換。如果 數大於 2^31 會轉換為 int 如果大於 了,就轉換為double。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved