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

У меня проблемы со сценарием ниже. В настоящее время это просто чередование цветов для первых 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>"; 
} 
?>

4 ответа

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

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

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

у вас есть 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>";
}

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

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

<?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>";
}
?>

В вашем массиве цветов всего четыре элемента. Когда $ 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

Другие вопросы по тегам