У меня проблемы со сценарием ниже. В настоящее время это просто чередование цветов для первых 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>&#".$i.";</span>";
}
?>
Вы можете использовать оператор модуля для этого (остаток после деления):
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>&#".$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>&#".$i.";</span>";
$colorPos++;
if($colorPos == 4) $colorPos = 0;
}
?>
Вы также можете использовать next () и reset () в массиве: http://php.net/manual/en/function.next.php
Спасибо всем. Основываясь на ваших предложениях, я закончил так:
<?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>&#".$i.";</span>";
}
?>