2013-03-21 120 views
4

因爲生產服務器是32位,而我的開發機器是64位(我正在運行Kubuntu 12.04 64位),所以在轉移到生產時,我遇到了代碼問題。我的問題是。如果不安裝23位版本的PHP,是否可以強制int爲32位?無論是該庫還是允許我選擇最大int值的庫如何在64位PHP安裝中使用32位整數?

+0

nope。 PHP不提供對變量的控制。你不能使var成爲「short」,「int」或「unsigned」。只有整數,字符串,對象,數組。但是,沒有理由不能安裝32位版本的PHP。它可能有多個獨立的PHP安裝。 – 2013-03-21 20:29:51

+2

您在PHP代碼中執行什麼樣的操作可能需要int爲32位? – 2013-03-21 20:29:52

+0

您可以將int(使用setter函數)限制爲不超過32位整數數字限制(2,147,483,647)。因此,如果將常規整數設置爲高於此值,則可以拋出異常。這當然不是萬無一失的。此外,它可能不會獲得你的記憶,因爲PHP仍然會保留64位整數的所有空間。你可以做的最後一件事就是創建一個類,它代表一個32位整數,帶有鏈式'char',但這可能不會比使用64位整數更有用。 – 2013-03-21 20:33:18

回答

8

整數是該平臺上指針的大小。 (32位PHP - > 32位整數,64位PHP - > 64位整數)。

請注意,當整數運算溢出時,變量將變成浮點數。 PHP documentation解釋了所有這一切。

我不確定你在代碼中做什麼會導致你關心整數是多少。但是,如果您只關心32位的值,則始終可以屏蔽低32位:

$val = $something & 0xFFFFFFFF; 
+0

'$ val = $ something&0xFFFFFFFF;'這一行讓我的一天感謝! – fnkbz 2015-07-27 12:18:00

+3

一種情況是在計算一個CRC32的情況下,不使用CRC32中的構建,就像在我的情況下一樣,我需要一次完成一個字節。這裏你乘以相當大的整數,並且你希望它們像有符號的32位整數一樣,即使是在64位系統上。 – 2015-11-01 12:11:08

相關問題