从数组中选择两种颜色

时间:2014-01-19 01:57:46

标签: php css

建立了一个网站,其中包含五种预定义颜色的特定调色板,背景颜色就是其中之一。 CSS文件使用PHP呈现,这要归功于我能够得到以下工作(使用占位符颜色):

<?php
  $bg_colors = array('red', 'blue', 'green', 'yellow', 'orange');
  $bg_rand = $bg_colors[array_rand($bg_colors)];
?>
background-color:<?=$bg_rand?>;

现在的问题是有没有办法调用array_rand遗漏的四种颜色? 让我们说背景颜色变成了绿色,我怎么能特别称呼#1,#2,#4和#5?

原因是这五种颜色将在整个网站中使用,并且在这种情况下,具有与身体背景相同的背景颜色的任意div是不可取的。我怎样才能做到这一点?

4 个答案:

答案 0 :(得分:1)

从理论上讲,虽然这不是最干净的选择,但是从长远来看,你可以随意洗牌,然后使用第一个结果,留下以下4个随你工作。

例如:

<?php
$bg_colors = array('red', 'blue', 'green', 'yellow', 'orange');
shuffle($bg_colors);
?>
background-color:<? echo $bg_colors[0]; ?>

这将使剩余的4种颜色随机地保留在数组值(1,2,3,4)

EG; $ bg_c​​olors [1],$ bg_c​​olors [2]等。

答案 1 :(得分:0)

您可以使用array_splice()获取随机广告。然后数组只有剩余的颜色

array_splice($bg_colors, $random_number, 1);

编辑:拼写错误

答案 2 :(得分:0)

你可以填充数组并逐个获取值,如下所示:

<?php
$bg_colors = array('red', 'blue', 'green', 'yellow', 'orange');
shuffle($bg_colors);
$bg_rand = array_shift($bg_colors);

现在你将在阵列中留下4种颜色。

此外,您可以制作5种颜色的特定css文件,并随机添加其中一个到页面。但是你会说只有5种不同的颜色模式。现在你可以拥有120或者什么

答案 3 :(得分:0)

您可以在使用后删除颜色

$rand_index = array_rand($bg_colors);
$bg_rand = $bg_colors[$rand_index];
unset($bg_colors[$rand_index]);

或者将已使用的颜色保存在名为$used_colors的第二个数组中,然后在选择随机颜色之前将其过滤掉

$available_colors = array_intersect($bg_colors, $used_colors);
$bg_rand = $available_colors[array_rand($available_colors)];