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

これはもっと簡単かもしれません:

<?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 に答える
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 に答える
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 に答える