В a Russian card game я пытаюсь вести статистику о том, как часто игрок ругается (говорит «плохие слова» - и у нас есть много из них на русском языке) в следующей таблице PostgreSQL:Целочисленное деление в PHP дает нуль - как его отличить от float?
# select * from pref_chat order by swear desc;
id | swear | lines
-------------------------+-------+-------
OK194281930260 | 3 | 153
OK350321778615 | 2 | 127
DE12770 | 2 | 339
OK122898831181 | 2 | 63
OK349829847011 | 2 | 126
OK215240745969 | 1 | 66
OK459742722980 | 1 | 96
И Мне нужно создать целое число этих данных - от 1 до 100 (перелива в порядке) - так что я могу создать следующее «swear'o'meter:
так что я (с PHP 5.3 в CentOS 6.2):
$sth = $db->prepare('select swear, lines from pref_chat where id=?');
$sth->execute(array($id));
if ($row = $sth->fetch(PDO::FETCH_ASSOC)) {
$quotient = 100 * floor(20 * $row['swear']/(1 + $row['lines']));
print('<p><img src="https://chart.googleapis.com/chart?chs=700x100&cht=gom&chco=00FF00,FFFF00,FF0000&chxt=x&chxl=0:|Swearometer&chd=t:' . $quotient . '" width=700 height=100 alt="Swearometer"></p>)';
}
К сожалению, я получаю нуль - поскольку PHP, вероятно, выполняет «целочисленное деление».
Я пытался предварять этаж() к $ ряду [ «клясться»] и $ строки [ «строки»] к «слепок» их плавать - но это не помогло.
UPDATE:
К сожалению, у меня была опечатка в моем оригинальный вопрос ... The $ фактор действительно 0, я распечатать его. Я также попытался следующие, но все равно нулю:
$quot = 100 * floor(20 * $row['swear']/(.1 + $row['lines']));
+1 для swearometer ... – biziclop
Рассмотрите возможность перемещения вычислений со стороны PHP в базу данных; они являются исключительно мощными инструментами для хруста данных, и это прекрасный пример. – jmkeyes