Я пытаюсь отобразить массив, в котором я хочу сравнить фактическое число с предыдущим. Результат в%. Если разница в процентах между текущим и предыдущим больше 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)
Есть разные вещи, которые кажутся неправильными или даже некорректными в вашем коде. Попробуйте с этим и не стесняйтесь комментировать, если у вас есть проблемы, я постараюсь обновить.
_ Обычно лучший способ извлечь строки из результата запроса — использовать функции, специально предназначенные для этого, например, в вашем случае 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'];
}
?>
Других решений пока нет …