Fair few years late, but this might help someone,
$baseColors = [
1 => 'r',
2 => 'g',
3 => 'b'
];
$colorMap = [];
$minValue = 155;
$maxValue = 200;
$primaryColorIndex = rand(1, 3);
$primaryColor = $baseColors[$primaryColorIndex];
unset($baseColors[$primaryColorIndex]);
$colorMap[$primaryColor] = 255;
foreach($baseColors as $baseColor) {
$colorMap[$baseColor] = rand($minValue, $maxValue);
}
krsort($colorMap);
$color = '';
foreach($colorMap as $value) {
$color .= $value;
if($value !== end($colorMap)) {
$color .= ',';
}
}
return 'rgb(' . $color . ')';
This will return rgb value.
This should generate a random pastel colour which uses red, green or blue as its 'primary' most outspoken colour.
Edit:
$baseColors = [
1 => 'r',
2 => 'g',
3 => 'b'
];
$colorMap = [];
$minValue = 155;
$maxValue = 200;
$primaryColorIndex = rand(1, 3);
$primaryColor = $baseColors[$primaryColorIndex];
unset($baseColors[$primaryColorIndex]);
$colorMap[$primaryColor] = 255;
foreach($baseColors as $baseColor) {
$colorMap[$baseColor] = rand($minValue, $maxValue);
}
krsort($colorMap);
$rgbColor = [];
foreach($colorMap as $key => $value) {
$rgbColor[$key] = $value;
}
$color = sprintf('#%02x%02x%02x', $rgbColor['r'], $rgbColor['g'], $rgbColor['b']);
This will return a hex value.