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