Проблемы с чередующимися цветами

У меня проблемы со сценарием ниже. В настоящее время это просто чередование цветов для первых 4 $ я предметов. Остальное отражено в черном. Как сделать так, чтобы он перебирал цвета для всех значений $ i?

<?php
$colors = array('lightgreen','lightblue','orange','red');

for($i = '0'; $i < '50'; $i++) {
echo " <span style='color: ".$colors[$i].";'><span style='font-family: Webdings; font-size: 30px; '>&#".$i."</span>&#38;&#35;".$i.";</span>";
}
?>

-1

Решение

Вы можете использовать оператор модуля для этого (остаток после деления):

echo " <span style='color: ".$colors[$i % 4] ...
2

Другие решения

[РЕДАКТИРОВАТЬ: на основе ответа Джероена, который лучше, чем мой]:

у вас есть 4 цвета, и вы зацикливаетесь 50 раз, не проверяя, доступен ли какой-либо цвет. Вы должны добавить переменную, чтобы проверить количество цветов и установить его на 0, когда больше нет доступных:

<?php
$colors = array('lightgreen','lightblue','orange','red');
$nbColors = count($colors);

for($i = '0'; $i < '50'; $i++) {
echo " <span style='color: ".$colors[$i % $nbColors].";'><span style='font-family: Webdings; font-size: 30px; '>&#".$i."</span>&#38;&#35;".$i.";</span>";
}

Это позволяет вам добавлять цвета в исходный массив, не нарушая код.

0

В вашем массиве цветов всего четыре элемента. Когда $ i равен 3, $ colors [$ i] будет вытягивать красный, поскольку он четвертый (помните, что массив основан на нуле). Поэтому, когда $ i равен 5, в массиве в этой позиции нет цвета.

<?php
$colors = array('lightgreen','lightblue','orange','red');
//Create a variable to store the colour index
$colorPos = 0;

for($i = '0'; $i < '50'; $i++) {
echo " <span style='color: ".$colors[$i].";'><span style='font-family: Webdings; font-size: 30px; '>&#".$i."</span>&#38;&#35;".$i.";</span>";
$colorPos++;
if($colorPos == 4) $colorPos = 0;
}
?>

Вы также можете использовать next () и reset () в массиве: http://php.net/manual/en/function.next.php

0

Спасибо всем. Основываясь на ваших предложениях, я закончил так:

<?php
$colors = array('lightgreen','lightblue','orange','red','magenta');

for($i = '0'; $i < '50'; $i++) {
echo " <span style='color: ".$colors[$i % count($colors)].";'><span style='font-family: Webdings; font-size: 30px; '>&#".$i."</span>&#38;&#35;".$i.";</span>";
}
?>
0
По вопросам рекламы [email protected]