首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP / Math -获取网格值

PHP / Math -获取网格值
EN

Stack Overflow用户
提问于 2018-02-05 20:54:00
回答 1查看 69关注 0票数 2

所以这可能有点奇怪,但是...想象一个10x10的网格,每个网格从左到右,从上到下编号,从1开始,以100结束。

我想输入一个网格号($plot)并获得它周围的每个网格号。

我从创建一个数组开始:

代码语言:javascript
复制
$plot = 45;
$arr = array(
    $plot-11, $plot-10, $plot-9, 
    $plot-1, $plot, $plot+1, 
    $plot+9, $plot+10, $plot+11
    );

这可以很好地工作。

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

有什么聪明的方法来解决这个问题吗?

EN

回答 1

Stack Overflow用户

发布于 2018-02-11 05:50:47

您可以过滤数组并仅保留距离为1或0的单元格:

代码语言:javascript
复制
$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);

结果:

代码语言:javascript
复制
array (
  0 => 39,
  1 => 40,
  3 => 49,
  4 => 50,
  6 => 59,
  7 => 60,
)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48623079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档