所以这可能有点奇怪,但是...想象一个10x10的网格,每个网格从左到右,从上到下编号,从1开始,以100结束。
我想输入一个网格号($plot)并获得它周围的每个网格号。
我从创建一个数组开始:
$plot = 45;
$arr = array(
$plot-11, $plot-10, $plot-9,
$plot-1, $plot, $plot+1,
$plot+9, $plot+10, $plot+11
);这可以很好地工作。

除非我在网格边缘附近添加一个图(如$plot = 50),否则它会在下一行的开始处给出结果。例如:

有什么聪明的方法来解决这个问题吗?
发布于 2018-02-11 05:50:47
您可以过滤数组并仅保留距离为1或0的单元格:
$plot = 50;
$arr = array(
$plot-11, $plot-10, $plot-9,
$plot-1, $plot, $plot+1,
$plot+9, $plot+10, $plot+11
);
$plotX = ($plot - 1) % 10 + 1;
$plotY = ceil($plot / 10);
$arr = array_filter($arr, function($item) use($plotX, $plotY){
return 1 >= abs($plotX - (($item - 1) % 10 + 1))
&& 1 >= abs($plotY - ceil($item / 10));
});
var_export($arr);结果:
array (
0 => 39,
1 => 40,
3 => 49,
4 => 50,
6 => 59,
7 => 60,
)https://stackoverflow.com/questions/48623079
复制相似问题