【问题标题】:Change color alternately using 4 different colors in PHP在 PHP 中使用 4 种不同颜色交替更改颜色
【发布时间】:2018-05-31 13:15:52
【问题描述】:

我对此进行了大量研究,但最终只使用了 2 种不同的颜色而不是 4 种。我想要的是使用 4 种不同的颜色交替更改颜色(blueredgreenyellow)。我只有两种颜色。请参阅下面的代码:

<?php $colors_counter = 0; ?>
@foreach($posts as $post)

  <div class="header-{{ ($colors_counter%2 == 0) ? 'blue' : 'red' : 'green' : 'yellow' }}">
    {{ $post->name }}
  </div>

  <?php $colors_counter++; ?>
@endforeach

注意:我也在使用 laravel 5。

【问题讨论】:

  • 好的,很高兴知道。您对此有任何疑问或问题吗?
  • color_counter 是什么?存储哪个颜色键或什么?
  • @Andreas 是的,当我做 4 种颜色时它不起作用。
  • 当我查看代码时,它会计算每次运行的次数。
  • 如果你想要四个选项,为什么要使用三元?三元有两种选择(除非你想弄得一团糟)。一个普通的 if() 或 switch 会更干净、更好地完成这项工作。

标签: php html css laravel-5


【解决方案1】:

简单可扩展的解决方案

您可以将颜色放在单独的数组中,并取总计数的 mod 值来交替行之间的颜色。

此解决方案具有可扩展性,适用于N 行数中的M 颜色数。

这样,即使您修改颜色或行数,代码也能正常工作。

可扩展的代码逻辑

$colors = [
    'blue'
    'red',
    'green',
    'yellow',
];
$no = count($colors);

// Then use this inside the loop
$colors[$colors_counter % $no];

示例

$colors = [
    'blue',
    'red',
    'green',
    'yellow',
];

$no = count($colors);

for ($i=0;$i < 10; $i++) {
  echo $colors[$i % $no]."\n";  
}

输出

blue
red
green
yellow
blue
red
green
yellow
blue
red

【讨论】:

    【解决方案2】:

    您应该定义颜色数组并使用 colors_counter 作为数组索引。

    <?php
      $colors_counter = 0;
      $colors = array(0=>"blue", 1=>"red", 2=>"green", 3=>"yellow");
    ?>
    @foreach($posts as $post)
    
      <div class="header-{{ $colors[$colors_counter] }}">
        {{ $post->name }}
      </div>
    
      <?php $colors_counter++; ?>
    @endforeach
    

    【讨论】:

    • 如果有五个帖子会怎样?那会是什么颜色呢? ;-) 3v4l.org/mCjD8
    • 如果post大于5,我只是加了一个if语句。无论如何,这有帮助。
    • 它将有类头 - 并将记录有关缺少索引的通知到错误日志
    • @Andreas 我的解决方案将处理这种情况
    • @RamC 我明白了!好一个
    猜你喜欢
    • 2023-03-21
    • 2011-02-25
    • 1970-01-01
    • 2019-03-28
    • 2021-11-25
    • 2013-05-08
    • 2016-09-30
    • 2013-08-01
    • 2022-11-02
    相关资源
    最近更新 更多