Сравните результат с предыдущим и сделайте X, если разница Y - PullRequest
0 голосов
/ 27 июня 2018

Я пытаюсь отобразить массив, в котором я хочу сравнить фактическое число с предыдущим. Результат в%. Если разница в процентах между текущим и предыдущим больше 10%, я хочу покрасить шрифт в красный.

К сожалению, весь мой результат будет красным, и я не знаю, где я могу разместить разницу в 10%.

<?php
#Difference_Query
$Difference_Query = "SELECT (SUM(current) * 100) / ((SUM(cw_1) + SUM(cw_2)) / 2) AS Diff FROM table GROUP BY time";
$Difference = mysqli_query($connect, $Difference_Query);

$previous = 0;
foreach($Difference as $result) {
    if($previous > $result['Diff']) {
        echo "<font color = 'red'>".number_format($result['Diff'], 2, ",", ".")."%"."</font>"."<br>";
    } else {
        echo number_format($result['Diff'], 2, ",", "."), "%", "<br>";
    }
    $previous = $result['Diff'];
}?>

Текущее изображение:

159,09% (red)
196,17% (red)
196,67% (red)
188,56%
188,41%
181,55%
178,15%
175,74%
183,03% (red)
193,31% (red)
224,28% (red)
230,28% (red)

1 Ответ

0 голосов
/ 27 июня 2018

Существуют разные вещи, которые кажутся неправильными или даже некорректными в вашем коде. Попробуйте с этим и не стесняйтесь комментировать, если у вас есть проблемы, я постараюсь обновить.

_ Обычно лучший способ извлечь строки из результата запроса - использовать специально созданные для этого функции, в вашем случае, например, mysqli_fetch_assoc (который будет использовать псевдоним или имя столбца в качестве ключа для вашего массива)

_ implode теперь бесполезно в теории, если $result['Diff'] - это int (вы действительно хотите int), и даже выдаст ошибку

_Не понятно, хотите ли вы, чтобы разница между предыдущим и текущим составляла 10 или 10% от текущего. В примере показан первый

 <?php
$Difference_Query = "SELECT (SUM(current) * 100) / ((SUM(cw_1) + SUM(cw_2)) / 2) AS Diff FROM table GROUP BY time";
$Difference = mysqli_query($connect, $Difference_Query);

$previous = 0;
while($result = mysqli_fetch_assoc($Difference)) {
    //abs is in case results are not in ascending order; this if will test if current is more than previous+10 or less than previous-10
    if(abs($result['Diff'] - $previous) > 10) {
        echo "<font color = 'red'>".number_format($result['Diff'], 2, ",", ".")."%"."</font>"."<br>";
    } else {
         echo number_format($result['Diff'], 2, ",", "."), "%", "<br>";
    }
    $previous = $result['Diff'];
}
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...