0

私はこのforeachループを持っています

foreach ($this->shuffle_with_keys($myBricksAndRatios) as $key) {         

   $bricks_to_choose = mt_rand(1,1);

   $cur = imagecreatefrompng("/var/www/brickmixer/bricks/". $key[0]."".$bricks_to_choose.".png"); 
   imagecopy($img, $cur, $coords, 0, 0, 0, 125, 30); 

   $coords += 132;
}

10枚ごと、20枚ごと、30枚ごとなど、画像ごとに新しい座標を設定するにはどうすればよいですか?

x = 0 および y = 0 で始まる 1 行に 10 個の画像を出力する必要があります。11 番目の画像は x = 0 および y = 37 で始まります。

21 番目の画像は、x = 0、y = 74 などに配置されます。

4

2 に答える 2

1

非常に単純なはずです。以下のコードは最適ではないかもしれませんが、簡単に理解できます。

$dx = 132;
$dy = 37;
$x = 0;
$y = 0;
$perrow = 20;
$cnt = 1;

foreach ($this->shuffle_with_keys($myBricksAndRatios) as $key) {         

    $bricks_to_choose = mt_rand(1,1);

    $cur = imagecreatefrompng("/var/www/brickmixer/bricks/". $key[0]."".$bricks_to_choose.".png"); 
    imagecopy($img, $cur, $x, $y, 0, 0, 125, 30);

    $x += dx;

    if(++$cnt % $perrow == 0) {
        $x = 0;
        $y += dy;
    }
}
于 2012-09-17T10:56:44.717 に答える
0
$i = 0;
foreach ($this->shuffle_with_keys($myBricksAndRatios) as $key) {         

   $bricks_to_choose = mt_rand(1,1);

   $ycords = (floor(($i++) / 10) * 37);

   $cur = imagecreatefrompng("/var/www/brickmixer/bricks/". $key[0]."".$bricks_to_choose.".png"); 
   imagecopy($img, $cur, $coords, $ycords, 0, 0, 125, 30); 

   $coords += 132;
}

これはうまくいくはずです。

行に注意してください$ycords = (floor(($i++) / 10) * 37);

編集:もちろん、Xポジショニングが必要ない場合は、次のように変更$coordsします0

于 2012-09-17T10:54:41.187 に答える