Изменить цветовой блок на основе строки% с массивом - PullRequest
0 голосов
/ 26 июня 2018

У меня есть значения: 1,5,7,2,25,2,6, и я хотел бы дать всем значениям определенный%, который будет связан с цветом.

Так что самое высокое значение составляет 25 -100%.Самое низкое значение - 1 - 10%.

Это предварительный просмотр со многими значениями: enter image description here

Имея эти цифры, я хотел бы проверить другиечисла%, но я хочу сделать то же самое с 10 другими цветами:

.100 {
  color: rgb(30, 144, 255);
}
.90 {
  color: rgba(30, 144, 255, 0.9);
}
.80 {
  color: rgba(30, 144, 255, 0.8);
}
.70 {
  color: rgba(30, 144, 255, 0.7);
}
.60 {
  color: rgba(30, 144, 255, 0.6);
}
.50 {
  color: rgba(30, 144, 255, 0.5);
}
.40 {
  color: rgba(30, 144, 255, 0.4);
}
.30 {
  color: rgba(30, 144, 255, 0.3);
}
.20 {
  color: rgba(30, 144, 255, 0.2);
}
.10 {
  color: rgba(30, 144, 255, 0.1);
}

Я пробовал до сих пор:

$a_c_a = '1,5,7,2,25,2,6';

$a_c_a_min = min(array_filter($a_c_s));
$a_c_a_max = max(array_filter($a_c_s));

$a_c_a_min_10 = $a_c_a_min;
$a_c_a_max_100 = $a_c_a_max;

if (1 == $a_c_a_max) {
  $class_2 = '.100';
} elseif (1 == $a_c_a_min) {
  $class_2 = '.10';
}

if (5 == $a_c_a_max) {
  $class_3 = '.100';
} elseif (5 == $a_c_a_min) {
  $class_3 = '.10';
}

if (7 == $a_c_a_max) {
  $class_4 = '.100';
} elseif (7 == $a_c_a_min) {
  $class_4 = '.10';
}

[...] up to number 6

Вывод должен быть:

 $class_1 = '.50'; (1)
 $class_2 = '.70'; (5)
 $class_3 = '.90'; (7)
 $class_4 = '.60'; (2)
 $class_5 = '.100'; (25)
 $class_6 = '.60'; (2)
 $class_7 = '.80'; (6)

Примечание: Также, если значения будут 1,2,1,1,3, тогда я хотел бы использовать .100 и .90 и .80 - от самого высокого.

1 Ответ

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

Сначала используйте array_unique(), чтобы получить все различные значения массива, и sort(), чтобы упорядочить их.Затем вы можете создать ассоциативный массив для сопоставления этих отсортированных значений с соответствующими процентами.

$percentages = array(100, 90, 80, 70, 60, 50, 40, 30, 20, 10);
$unique_values = array_map('intval', array_unique($a_c_s));
rsort($unique_values);
$percent_map = array_combine($unique_values, array_slice($percentages, 0, count($unique_values)));

foreach ($a_c_a as $val) {
    echo $val . " - " . $percent_map[$val] . "%<br>";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...