Explination
通过PHP我生成了一个8x8的div网格。问题不是要发生这种情况(虽然我的方法可能需要改变),而是块的x和y坐标(存储为id)。
守则
class Grid
{
function __construct()
{
$i = 0;
$w = 'white';
$b = 'black';
for($y=1; $y<=8; $y++)
{
for($x=1; $x<=8; $x++)
{
if($i % 2)
echo "<div class='$w' id='{$x}{$y}'></div>";
else
echo "<div class='$b' id='{$x}{$y}'></div>";
$i++;
}
echo "<br clear='all' /> \n";
$i++; //offset color for next row
}
}
}
问题
虽然这个类完成了显示网格的工作,但问题是坐标不是我需要它们的方式。由于HTML的呈现方式,坐标以下列方式输出(将每个括号想象为div在屏幕上的位置):
note: [x coord, y coord]
[1,1] [2,1] [3,1]
[1,2] [2,2] [3,2]
[1,3] [2,3] [3,3]
我实际上需要这个'反向',所以它从左下角开始,坐标类似于典型网格的坐标,即:
[1,3] [2,3] [3,3]
[1,2] [2,2] [3,2]
[1,1] [2,1] [3,1]
我确信有很多方法可以解决这个问题,所以答案将是最优雅的解决方案,而不是最快的解决方案。谢谢!
答案 0 :(得分:3)
我认为这就像改为:
一样简单 for($y=8; $y>=1; $y--)
答案 1 :(得分:1)
class Grid
{
function __construct()
{
$i = 0;
$w = 'white';
$b = 'black';
for($y=8; $y>0; $y--)
{
for($x=1; $x<=8; $x++)
{
if($i % 2)
echo "<div class='$w' id='{$x}{$y}'></div>";
else
echo "<div class='$b' id='{$x}{$y}'></div>";
$i++;
}
echo "<br clear='all' /> \n";
$i++; //offset color for next row
}
}
}
你完成了
答案 2 :(得分:0)
正在寻找一些关于PHP中的网格构建的代码,使用了你的 代码并改变了......
class Grid { function __construct() { $ i = 0; $ w ='白色'; $ b ='黑色'; $ y = 1; //网格大小Y. $ y_max = 10; $ x_max = 10;
while($y <= $y_max){ $x = 1; //grid size X while($x <= $x_max){ $color = ($i % 2 ? $w : $b); echo "<div class='".$color."' id='{$x}{$y}'> $x , $y </div>"; $i++; $x++; } echo "<br clear='all' /> \n"; $i++; //offset color for next row $y++; } }
}
对于格式化,我将在稍后修复格式。