0

我正在尝试编写代码,并且可以使用一些帮助。假设我有一个 5 种颜色的测试文件。我只希望每种颜色使用 10 次。

编辑:编辑代码以更多地反映我的设置。主要需要创建一个函数,我可以调用它来返回我的 5 种颜色中的 1 种未使用超过 10 次的颜色。

$colors = array_map("trim", file("colorlist.txt")); //loads all my colors

// echos all my colors
foreach($colors as $color){
  echo ''.$color;
}

function checklimit($string){

BS CODING......
$currentcolor = getcolor();

}


function getcolor() {
 $totalpercolor = 10;
  If all $colors $totalused = $totalpercolor {
      exit;
  } else {
  shuffle($colors)
  Return a single color who's $totalused < $totalpercolor;
  $color's $totalused = $totalused++
  }
}


$result = mysql_query("SELECT whatever FROM $table_name WHERE doesntmatter IS NULL");
while ($row = mysql_fetch_assoc($results)){
  $data = checklimit($string);
}

组织:

$colors = array(file("colorlist.txt"));

$i = 1;
foreach($colors as $color){
  if color[i] <= 10 {
  var color[i] = 0++;
  i++;
  } else {
     If all colors = 10 { 
         end;
     } else {
           start loop over, get new color
     }
  }
}

我确信这不是正确的方法。所以任何帮助都会很棒。

4

3 回答 3

0

你可以简单地拥有

加载颜色

$colors = array_map("trim", file("log.txt"));
printf("%s\n", implode(",", $colors)); //red,blue,orage,black,purble

要重复使用您可以使用的颜色modulus

$total = count($colors);
$limit = 10;
for($i = 0; $i < $limit; $i ++) {
    echo $colors[$i % $total], PHP_EOL;
}

或无限迭代器

$limit = 10;
$iterator = new InfiniteIterator(new ArrayIterator($colors));
foreach(new LimitIterator($iterator, 0, $limit) as $color) {
    echo $color, PHP_EOL;
}

两者都会返回

red
blue
orage
black
purble
red
blue
orage
black
purble
于 2013-05-23T15:27:01.987 回答
0

我不知道您想要什么,所以我只回答您可能想要的三种情况:如果您需要将每种颜色打印 10 次,然后继续使用下一种颜色

$colors = array_map("trim", file('colorlist.txt'));
foreach ($colors as $color)
{
    for ($i=1; $i<=10; $i++)
        print $color . PHP_EOL;
}

将输出:

blue
blue
blue
blue
blue
blue
blue
blue
blue
blue
green
green
green
green
green
green
green
green
green
green
(the other 3 colors)

如果需要按顺序输出颜色:

$colors = array_map("trim", file('colorlist.txt'));
for ($i=1; $i<=10; $i++)
{
    foreach($colors as $color)
        print $color . PHP_EOL;
}

会输出你:

blue
green
red
pink
gray
blue
green
red
pink
gray

如果需要随机输出颜色,并且每种颜色必须出现 10 次:

$colors_file = array_map("trim", file('colorlist.txt'));
foreach ($colors_file as $color)
    $colors[] = array($color, 0);

while(!empty($colors))
{
    $index = rand(0,count($colors)-1);
    echo $colors[$index][0] . PHP_EOL;
    if (++$colors[$index][1] == 19)
    {
        unset($colors[$index]);
        $colors = array_values($colors);
    }
}

将输出:

pink
red
red
blue
gray
blue
green
blue
gray
gray
green
red
red
于 2013-05-23T15:57:30.727 回答
0
foreach($colors as $color){
    if($color_num[$color])
     $color_num[$color]++;
    else $color_num[$color] = 1;
 }

在循环结束时,您有一个 $color_num 数组,其中包含每种颜色的计数。现在您可以添加一些循环检查,例如。if($color_num[$color] >= 10) ...

-- 但确实你应该发布有效的代码,这样我们才能提供建设性的答案。

于 2013-05-23T15:24:21.553 回答