1

我正在为 3x3 平铺网格创建一系列坐标。

例如(x:y)

1:1 2:1 3:1
1:2 2:2 3:2
1:3 2:3 3:3

使用此代码:

$c1 = 1;
$c2 = 1;
for($i = 0; $i < 9; $i++){

    if($c1 == 1){

        $x = $c1;
        $y = $c2;

        ++$c1;
    }
    elseif($c1 == 3){

        $x = $c1;
        $y = $c2;

        $c1 = 1;
        ++$c2;
    }
    else{
        $x = $c1;
        $y = $c2;

        ++$c1;
    }

    echo $x.':'.$y.'<br />';
}

这是实现这一目标的最有效方法吗?

我有一种直觉,我错过了一些可以简化这个过程的东西。

感谢您的关注。

4

6 回答 6

3

这应该有效:

for ($i = 1; $i <= 3; $i++) {
    for ($j = 1; $j <= 3; $j++) {
        echo $j . ":" . $i . " ";
    }
    echo "<br />";
}
于 2012-09-27T12:56:20.197 回答
2

嵌套循环是你的朋友:

<?php
for ($row=1; $row<=3; $row++)
{
    for ($col=1; $col<=3; $col++)
    {
        echo "{$col}:{$row} ";
    }
    echo PHP_EOL;
}

结果:

~> php -f g.php
1:1 2:1 3:1
1:2 2:2 3:2
1:3 2:3 3:3

享受

于 2012-09-27T12:56:55.157 回答
1

为什么不使用 2 个循环:

for($x = 1; $x <= 3 ; $x++) {
  for($y = 1; $y <= 3; $y++) 
    echo $y . ' : ' . $x . ' ';
  echo '<br>' 
}
于 2012-09-27T12:57:35.483 回答
1

这可能更简单:

<?php
$size = 3;
for ( $x=1; $x<=$size; $x++ ) {
    for ( $y=1; $y<=$size; $y++ ) {
        echo $y . ":" . $x . " ";
    }
    echo "<br />";
}

?>
于 2012-09-27T12:56:51.647 回答
0
<?php
function numberGrid($x, $y)
    {
    $output = '';
    for($i = 1; $i <= $x; $i++)
        {
        for($j = 1; $j <= $y; $j++)
            {
            $output .= $i.':'.$j.' ';
            }
        $output .= "\n";
        }
    return $output;
    }

echo '<pre>'.numberGrid(5, 7).'</pre>';

输出:

1:1 1:2 1:3 1:4 1:5 1:6 1:7 
2:1 2:2 2:3 2:4 2:5 2:6 2:7 
3:1 3:2 3:3 3:4 3:5 3:6 3:7 
4:1 4:2 4:3 4:4 4:5 4:6 4:7 
5:1 5:2 5:3 5:4 5:5 5:6 5:7 
于 2012-09-27T12:57:44.157 回答
0
<?php
for($i=1;$i<=3;$i++)
{
    for($j=1;$j<=3;$j++)
    {
        echo $j.':'.$i.' ';
    }
    echo "\n";
}
?>
于 2012-09-27T12:57:53.347 回答