5

とすれば

$c = 2; // number of columns
$r = 3; // number of rows

特定のセルのインデックスであるx,y値のグリッド座標を見つける必要があります(左、右、上、下の順序)。$i->->

通常、2 つのループを使用してこれを解決します。行のループと列の別のループですが、私の場合、これを数学的に行う必要があります。

したがって、上記の場合、次のようになります。

$grid = new Grid(2, 3);
                                         // i x y
list($x, $y) = $grid->getCoordOfCell(0); // 0 0 0
list($x, $y) = $grid->getCoordOfCell(1); // 1 1 0
list($x, $y) = $grid->getCoordOfCell(2); // 2 0 1
list($x, $y) = $grid->getCoordOfCell(3); // 3 1 1
list($x, $y) = $grid->getCoordOfCell(4); // 4 0 2
list($x, $y) = $grid->getCoordOfCell(5); // 5 1 2

仮説的には、 grid cellgetCoordOfCell()の座標の配列を返します。x,y$i

ここで何かを見逃したかどうかはわかりませんが、これでほとんどだと思います。

結果の数式はdivs またはmods に基づいていると思いますが、これを自分で考える精神力がありません。さらに、質問として、これは将来他の人に役立つはずです。ああ、私はここで PHP について話しているが、これはおそらく言語にとらわれない.

4

1 に答える 1

14

あなたが持っている右の列を取得するには:

 $i % NUMBER_ITEMS_IN_ROW

そして正しい行を取得するには:

 $i / NUMBER_ITEMS_IN_ROW

あなたの例では、3 行と 2 列 (== 行の項目) があるため、次のようになります。

 $i    $x ($i%2)    $y ($i/2)
 0     0            0
 1     1            0
 2     0            1
 3     1            1
 4     0            2
 5     1            2
于 2012-09-13T08:18:05.943 に答える