PHP вычитание в цикле while для графа - PullRequest
0 голосов
/ 21 января 2011

У меня есть этот код:

$previous = 0;
        while($row = mysql_fetch_array($result)){
            $difference = $row['steam'] - $previous;
            $strXML .= "<set name='".date("G:i:s", strtotime($row["tstamp"])).  "' value='".$difference."' color='AFD8F8' />";
            $previous = $row['steam'];
        }

Этот код прекрасно работает с каждым результатом после первого. Если я могу объяснить, $ previous начинается с 0, поэтому первый блок на столбчатой ​​диаграмме фактически получается с 3334, а 3334 - 0 = 3334, однако с тех пор я получаю именно то, что хочу, потому что он выполняет математику между реальными значениями. , как я могу исправить первый результат?

Спасибо

Ответы [ 2 ]

2 голосов
/ 21 января 2011

Если вы отображаете изменения в значениях, не имеет ли больше смысла пропускать первое значение? Я положил пример кода ниже.

В противном случае я не уверен, какое именно значение вы бы хотели получить при первом запуске цикла.

$previous = 0;
$firstRun = true;
    while($row = mysql_fetch_array($result)){
        $difference = $row['steam'] - $previous;
        if (!$firstRun)
          $strXML .= "<set name='".date("G:i:s", strtotime($row["tstamp"])).  "' value='".$difference."' color='AFD8F8' />";
        $previous = $row['steam'];
        $firstRun = false;
    }
1 голос
/ 21 января 2011

Зависит от логики вашего приложения. Предоставляя альтернативу ответу Сэма, если $difference еще не установлен, вы можете установить его на ноль.

$difference = isset($difference) ? $row['steam'] - $previous : 0;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...