0

我正在寻找一种解决方案来切换循环中循环出的项目的颜色foreach。根据颜色的值,所有项目都应具有不同的颜色。

蓝色应该被给予 2 次,而黄色应该被给予 5 次 - 在一个序列中。

$colors = array
  (
  array("blue", 2),
  array("yellow", 5),
  array("green",4)
  );

foreach($colors as $color){
    foreach($color as $item){
        $colorClass = $item;
        echo $colorClass;
        //outputs blue8yellow12green16

    }
}

我希望输出为:

blue
blue
yellow
yellow
yellow
yellow
yellow
green
green
green
green

有没有办法做到这一点?我愿意在 php 或 javascript/jquery 中解决这个问题

4

3 回答 3

2

一个简单的解决方案可能是这样的:

$colors = array
  (
  array("blue", 2),
  array("yellow", 5),
  array("green",4)
  );

foreach($colors as $color){

    $colorClass = $item[0];
    $colorCount = $item[1];
    for($i=0; $i<$colorCount; $i++) {
      echo $colorClass;
    }

}
于 2013-03-31T10:33:55.480 回答
0

这是一些javascript:

var colors = [["blue",2],["yellow",5],["green",4]];
var colorClass = [];
for (var i = 0; i < colors.length; i++) {
    for (var g = 0; g < colors[i][1]; g++) {
        colorClass.push(colors[i][0]);
    }
}
output -> ["blue", "blue", "yellow", "yellow", "yellow", "yellow", "yellow", "green", "green", "green", "green"]

这段代码的好处是你可以在不改变算法的情况下添加更多颜色

于 2013-03-31T10:44:03.783 回答
0

如果您只想打印出字符串序列,请使用string_repeat

foreach($colors as $color){
    echo str_repeat($color[0] . "\n", $color[1]);
}

如果你想用颜色名称做一些事情,你可以坚持一个for循环:

foreach($colors as $color){

    for($i = 0; $i<$color[1]; $i++){

        // do stuff with $color[0] here
        // this loop will go on for $color[1] times

    }

}
于 2013-03-31T10:55:11.243 回答