[英]PHP random colors for every row
我正在使用 chart.js 制作饼图。 我想为 while 循环生成的每个切片使用不同的颜色。
$pull_request = 'SELECT * FROM `oc_aa_affiliatecollclicktracking`';
$sqli = $db->query($pull_request);
$num_rows=mysqli_num_rows($sqli);
$cur_row=0;
var pieData = [
<?php
while ($row = mysqli_fetch_array($sqli)) {
$color=intval(256*$cur_row/($num_rows-1));
$cur_row++;
echo '{
value: '.$row["product_clicks"].',
color: "rgb(256,'.$color.')", // NEED TO BE RANDOM FOR EVERY ROW/SLICE
highlight: "#333",
label: "' .$row["product_id"].'"
},';
}
?>
];
var ctx = document.getElementById("chart-area").getContext("2d");
window.myPie = new Chart(ctx).Pie(pieData);
} );
我发现的随机颜色会在整个图表的页面刷新时发生变化,但不会发生在单个切片上。 任何的想法?
您可以使用rand()
函数获取特定范围内的随机数。 看看这里
例子:
$color = "#" . rand(10,100);
你可以在任何你想要的地方替换 $color 。
如果你想要十六进制颜色使用这个功能
function random_color(){
mt_srand((double)microtime()*1000000);
$c = '';
while(strlen($c)<6){
$c .= sprintf("%02X", mt_rand(0, 255));
}
return $c;
}
如果您希望颜色明显地随机变化,您将需要一个 javascript 解决方案,或者如果您希望每次页面加载时每个切片都是不同的颜色,您可以使用类似的东西吗?
<?php
function randomColour() {
// Found here https://css-tricks.com/snippets/php/random-hex-color/
$rand = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f');
$color = '#'.$rand[rand(0,15)].$rand[rand(0,15)].$rand[rand(0,15)].$rand[rand(0,15)].$rand[rand(0,15)].$rand[rand(0,15)];
return $color;
}
while ($row = mysqli_fetch_array($sqli)) {
echo '{
value: '.$row["product_clicks"].',
color: '.randomColour().', // NEED TO BE RANDOM FOR EVERY ROW/SLICE
highlight: "#333",
label: "' .$row["product_id"].'"
},';
}
?>
如果您需要 javascript 解决方案,它会更复杂,因为我不知道 .Pie() 构造函数中会发生什么,以及如何将颜色变化元素挂钩到其中
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.