多维数组?根据相同数组中的值切换项(在数组中)的颜色


Multidimensional array? Switching colors (in array) on items based on value in the same array

我正在寻找一个解决方案来切换在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解决这个问题

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

$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;
    }
}

下面是一些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"]

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

如果您只想打印出字符串序列,请使用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
    }
}