【发布时间】:2016-09-16 10:08:31
【问题描述】:
我有一个带循环的滑块(最后一个元素后跟第一个元素),并且想要设置不同的颜色(基于 3 种颜色的范围)。
所以有两个条件:上一个颜色和下一个颜色不能相同,并且幻灯片的数量(数组中的元素)可能会有所不同。
好例子:
Array
(
[0] => yellow
[1] => blue
[2] => red
[3] => yellow
[4] => red
)
不好的例子(因为元素 0 和 4 是相同的颜色):
Array
(
[0] => yellow
[1] => blue
[2] => yellow
[3] => red
[4] => yellow
)
另一个带有更多元素的坏例子(因为元素 2 和 3 是相同的颜色):
Array
(
[0] => yellow
[1] => blue
[2] => red
[3] => red
[4] => blue
[5] => yellow
[6] => blue
)
这是我尝试的方法,但我认为这不是好方法:
$i = 0;
$bgcolors = array();
foreach($slides as $slide) {
switch ($i % 3) {
case 0:
$bgcolors[] = 'yellow';
break;
case 1:
$bgcolors[] = 'blue';
break;
case 2:
$bgcolors[] = 'red';
break;
}
if ((count($slides) - $i) % 3 == 0) $i = 0;
$i++;
}
【问题讨论】:
-
对于第一个(好)示例,它应该是蓝色的,对吗?或者你需要不同两种颜色之间的所有颜色?
-
@HareshVidja 是的,没错。由于上一个颜色是红色,下一个颜色是黄色,因此在这种情况下,蓝色是唯一的选择。
-
您需要数组或多种颜色,而不仅仅是满足您条件的第一种颜色?
-
不清楚您要做什么,但是您不能将元素与下一个元素进行比较,看看它们是否相同吗? bgcolors[i] != bgcolors[(i+1)%bgcolors.length]
-
为什么?这是一个“为我做作业”的问题吗?