私はループを持つスライダを持っています(最後の要素の後に最初の要素が続きます)、3色の範囲に基づいて別の色を設定したいと思います。最後の要素が前の項目でも最初の要素でもない配列を取得する方法は?
したがって、2つの条件があります:前の色と次の色は同じであってはなりません。また、スライドの数量(配列内の要素)は異なる場合があります。
良い例:
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++;
}
最初の(良い)例では青い色にすべきでしょうか?または異なる2色の間にあるすべての色が必要ですか? –
@HareshVidjaはい、そうです。前の色は赤で、次の色は黄色であるため、この場合は青だけが選択肢です。 – Dacobah
あなたの条件を満たす最初の色のみを配列または複数の色で結ぶ必要がありますか? –