我有一个PostgreSQL 8.4.6表格,其中最多32张牌的玩家手牌由32位代表:
# \d pref_hand
Table "public.pref_hand"
Column | Type | Modifiers
--------+-----------------------------+---------------
id | character varying(32) |
hand | bigint | not null
money | integer | not null
stamp | timestamp without time zone | default now()
Check constraints:
"pref_hand_hand_check" CHECK (hand > 0)
(您可以通过 bigint 看到我已经在上面作弊。)
My script(请滚动到底部查看呈现的卡片)在64位CentOS 5.5 Linux上运行正常。但是当我将它复制到我的32位开发VM时,它就失败了。
以下是代码摘录:
$sth = $db->prepare('select hand, money
from pref_hand where id=?
order by stamp desc');
$sth->execute(array($id));
while ($row = $sth->fetch(PDO::FETCH_ASSOC)) {
print ('<div>');
for ($i = count($CARDS) - 1; $i >= 0; $i--) {
$card = $CARDS[$i];
$color = (strpos($card, '♥') > 0 ||
strpos($card, '♦') > 0 ? 'red' : 'black');
if (23 == $i || 15 == $i || 7 == $i)
print(' ');
if ((1 << $i) & $row['hand'])
printf('<span class="%s">%s</span>', $color, $CARDS[$i]);
}
print ('</div>');
}
我认为 if((1&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&quot;&quot;&row如果我没有收到答案......)
我的问题是:如何在PHP中最好地处理这些情况?我需要将 $ row ['hand'] 强制转换为 unsigned int 或 long - 以便AND位运算符再次运行,但是我在PHP文档中找不到这些数据类型。
谢谢!亚历