Сравните результат с предыдущим и сделайте X, если разница Y

Я пытаюсь отобразить массив, в котором я хочу сравнить фактическое число с предыдущим. Результат в%. Если разница в процентах между текущим и предыдущим больше 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)

0

Решение

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

_ Обычно лучший способ извлечь строки из результата запроса — использовать функции, специально предназначенные для этого, например, в вашем случае 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'];
}
?>
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector