Я не знаю много о php, но вы можете решить это без массивов, используя простую математику.
допустим, x - это число от 0 до 100. Каждый цвет в нашем RGB должен быть между 0 и 0xFF (256 возможных значений), поэтому мы должны посмотреть на x / 100 и округлить его до дроби со знаменателем 256.
Другими словами, фракция: раунд ((х / 100) * 256) / 256
Это количество зеленого цвета (00FF00). Количество красного (FF0000) очевидно:
1 - раунд ((х / 100) * 256) / 256
Вместе мы получаем значение:
0xFF0000 + раунд ((x / 100) * 256) / 256 * (0x00FF00 - 0xFF0000)
и если x является целым числом и мы хотим избежать округления с целочисленным делением, мы должны оценить умножения перед делением:
0xFF0000 + (раунд ((x * 256) / 100) * (0x00FF00 - 0xFF0000)) / 256
и это самая круглая оценка.