PHP-在foreach中动态设置CSS类

PHP-在foreach中动态设置CSS类,php,foreach,Php,Foreach,我正在生成一系列链接,其中包含CSS应用的相关颜色栏。有5种阴影会降低不透明度,从100开始,向下以20为增量。因此,如果我有10行,它会像这样: 我将使用%运算符,它给出除法的剩余部分: $i = 0; for ($linkItems as $item) { $linkColour = 'linkcolour'; $mod = $i % 5; if ($mod != 0) { $linkColour .= '

我正在生成一系列链接,其中包含CSS应用的相关颜色栏。有5种阴影会降低不透明度,从100开始,向下以20为增量。因此,如果我有10行,它会像这样:


我将使用
%
运算符,它给出除法的剩余部分:

$i = 0;

for ($linkItems as $item) {
        $linkColour = 'linkcolour';
        $mod = $i % 5;
        if ($mod != 0) {
                $linkColour .= ' o'.(100 - (20 * $mod)) ;
        }

        echo $linkColour."\n";
        $i++;
}
例如:

  • 3%5->3
    ,因为:
    3/5=0*5+3
  • 6%5->1
    ,因为:
    6/5=1*5+1
然后,如果剩下的
0
是5的倍数,那么就不应用该类

否则,您可以将余数乘以20,然后将其减到100,以更正类

  • 1%5=1->等级为100-1*20=80
  • 2%5=2->等级为100-2*20=60
  • 5%5=0->不添加类
等等等等

输出:

linkcolour
linkcolour o80
linkcolour o60
linkcolour o40
linkcolour o20
linkcolour
linkcolour o80
linkcolour o60
...

你可以用多种方法来解决这个问题。 例如,您可以在数组中声明可用的CSS类并循环它们。在修改示例时,可以使用如下内容

<?php
$linkColourArray = ["","o80","o60","o40","o20"];
$count = 0;
foreach($linkItems as $item) {
    $linkItem = $item->getField('Link');
    $colourIndex = $count%5;
    $linkColour = $linkColourArray[$colourIndex]; 
    $count++;
    ?>

    <a href="link.php">
        <span class="linkcolour <?php echo $linkColour; ?>"></span>
       <span class="linkText"><?php echo $linkItem; ?></span>
     </a>
<?php
} // foreach $linkItems
?>

创建一个数组,只需遍历该数组即可获得如下值

<?php

$arraycolor = array('linkcolour','linkcolour o80','linkcolour o60','linkcolour o40','linkcolour o20');

$link = array('1','2','3','4','5','6','7','8','9','10');

$i=0;
foreach($link as $v)
{

?>
<a href="link.php">
        <span class="<?php echo $arraycolor[$i] ?>"></span>
       <span class="linkText"><?php echo $arraycolor[$i] ?></span>
     </a>
<br/>
<?php
    $i++;
    if($i==count($arraycolor))
    { 
        $i=0;
    }

}
?>

在foreach循环中,您可以根据键对foreach($key=>$item的linkItems){}进行键和值设置,您可以编写一个开关大小写并向其添加类。
linkcolour 
linkcolour o80 
linkcolour o60 
linkcolour o40 
linkcolour o20 
linkcolour 
linkcolour o80 
linkcolour o60 
linkcolour o40 
linkcolour o20