PHP-Relooping数组关联向后

时间:2017-09-15 17:30:48

标签: php arrays

我创建了一个这样的网格(一些间隙有障碍,但对于这个问题并不重要):

SELECT *
,LEAD(created) OVER (ORDER BY created) as next_created
,LEAD(created) OVER (ORDER BY created) < projected_end as was_skipped
FROM [your_table]

因此,初始位置是一个数组:

 private function newGrid()
    {
        $grid = array();

        for ($i = 0; $i < 10; $i++) {
            for ($j = 0 ; $j < 10; $j++) {
                $grid[$i][$j] = ['obstacle' => rand(0,1)];
            }
        }

        return $grid;
    }

例如,如果我移动到x方向,我想从网格的一个边缘包裹到另一个边缘(如球体)。 (前进和后退)

当我向前迈进时,我使用的模数如下:

$loc = array('x' => 1, 'y' => 3);   

但是,如果我想做同样的事情,但是倒退,这是更好的方法吗?当x变为0时,转到位置x = 9

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

为了向后退,你可以这样做:

$loc['x'] = ($loc['x'] + 9) % 10 ;

如果你有动态的方向&#34;变量可以取值1(前进)和-1(后退),然后:

$loc['x'] = ($loc['x'] + 10 + $direction) % 10 ;

这可能是一个实用的功能:

function move($loc, $deltaX, $deltaY) {
    $loc['x'] = ($loc['x'] + 10 + $deltaX) % 10;
    $loc['y'] = ($loc['y'] + 10 + $deltaY) % 10;
    return $loc;
}