Ben 32 kartları ile oyuncu eller 32 bit ile temsil edilir bir PostgreSQL 8.4.6 tablo var:
# \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)
(Ben zaten bigint kullanarak yukarıdaki aldattım görebilirsiniz).
My script (render kartlarını görmek için altına gidin lütfen) 64-bit CentOS 5.5 Linux üzerinde ok çalışır. Benim 32-bit geliştirme VM kopyalamak Ama ne zaman başarısız olur.
İşte kod alıntıdır:
$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>');
}
ve ben if ((1 << $i) & $row['hand']) (... Ben bir cevap alırsınız yoksa üzgünüm, ben daha sonra bir azalma test case hazırlamak olacak) orada başarısız olduğunu düşünüyorum
Benim soru: PHP en iyi bu durumlarla nasıl başa? I $row['hand'] unsigned int veya long nasılsa döküm gerekir - AND bit operatörü tekrar çalışır böylece, ama ben PHP bu veri türlerini bulamıyorum docs.
Teşekkür ederiz! Alex