2013-03-21 134 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

相关问题